PHP多维数组根据某一个字段排序

376次阅读
没有评论

现有如下一个多维数组,需要对其按 ID 序号进行排序。

<?php
$data = array(
  array('id' => 5,
    'name' => 'zhangsan'
  ),
  array('id' => 65,
    'name' => 'lisi'
  ),
  array('id' => 3,
    'name' => 'laowang',
  )
);

现在需要按照 ID 进行排序,需要用到如下两个函数:

array_column()

返回输入数组中某个单一列的值。

array_multisort() 

返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多
个值相同,它将对下一个数组进行排序。

第一个函数,是从数组中抽离出单独的一列值,垂直提取出来,第二个函数大意就是对多个数组按照第一个参照数组做相同的排序操作。

最终代码如下:

<?php
$data = array(
  array('id' => 5,
    'name' => 'zhangsan'
  ),
  array('id' => 65,
    'name' => 'lisi'
  ),
  array('id' => 3,
    'name' => 'laowang',
  )
);
$names = array_column($data,'id');
array_multisort($names,SORT_DESC,$data);

var_dump($data);

得到结果如下:

[
    {
        "id":65,
        "name":"lisi"
    },
    {
        "id":5,
        "name":"zhangsan"
    },
    {
        "id":3,
        "name":"laowang"
    }
]

array_multisort 的第二个参数可选:SORT_DESC 和 SORT_ASC,分别代表按照降序和升序排列。

加入官方交流QQ群:778957856
post-qrcode
 
clark
版权声明:本站原创文章,由 clark 2022-01-24发表,共计693字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码