我有一个二维数组,我想根据其中的某个键(key)进行升降序排序。可以使用下面的 PHP 语句。
其中 $data 是二维数组,根据 chapter_rate 字段升序排序。
$data = array( array( 'id' => 1, 'chapter_rate' => 0.5, 'name' => 'chengcheng', ), array( 'id' => 2, 'chapter_rate' => 0.8, 'name' => 'mali', ), array( 'id' => 3, 'chapter_rate' => 1, 'name' => 'zhangsan', ) ); $update_column = array_column($data,'chapter_rate'); array_multisort($update_column ,SORT_ASC, $data);
这里用到了两个数组方法,array_column() 和 array_multisort()。
1、其中 array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。
2、array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。
注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。
注释:您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,每个数组参数会使用默认值。
注意:
如果你报错了 array_multisort(): Array sizes are inconsistent,这是因为你 array_column() 数组数量和你 $data 数组数量不等引起的,自行打印出你的两个数组数量校验。