PHP:根据二维数组中的某个字段进行排序

2019-11-05

首先了解下以下两个函数:

1.array_column() 返回输入数组中某个单一列的值。

 

2.array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多

个值相同,它将对下一个数组进行排序。

具体实现代码实例:

$data = array(
  array(
    'id' => 5698,
    'first_name' => 'Bill',
    'last_name' => 'Gates',
  ),
  array(
    'id' => 4767,
    'first_name' => 'Steve',
    'last_name' => 'Aobs',
  ),
  array(
    'id' => 3809,
    'first_name' => 'Mark',
    'last_name' => 'Zuckerberg',
  )
);

//根据字段last_name对数组$data进行降序排列

$last_names = array_column($data,'last_name');
array_multisort($last_names,SORT_DESC,$data);

var_dump($data);

//可以使用多个排序条件

$last_names = array_column($data,'last_name');
$ids= array_column($data,'id');
array_multisort($last_names,SORT_DESC,$ids,SORT_ASC,$data);

var_dump($data);

注意:报错array_multisort(): Argument #2 is expected to be an array or a sort flag,是因为参数中的第二个参数是常量SORT_DESC,SORT_ASC, 代码中写成了'SORT_DESC' 然后就出现了上面的错误(更多的常量参数可参考官方文档:https://www.php.net/manual/zh/function.array-multisort.php)

文章来源于:https://www.cnblogs.com/wenzheshen/p/9455554.html

{/if}