我们在php的数组操作中经常用到对数组进行排序的问题,这里说的是对关联数组进行排序
需要用到函数 array_multisort 。
array_multisort(array_column($arr, 'weight'),SORT_NUMERIC, SORT_ASC, $arr); // 对关联数组 $arr 将键列'weight'转换为数字进行升序排序
SORT_NUMERIC // 转换为数字排序
SORT_STRING // 转换为文本排序
SORT_ASC // 升序
SORT_DESC // 降序
示例:
原关联数组:
$data[] = array('volume' => 'id100343', 'weight' => '4');
$data[] = array('volume' => 'id100212', 'weight' => '1');
$data[] = array('volume' => 'id104104', 'weight' => '10');
var_dump($data);
按照weight进行排序(数字方式SORT_NUMERIC):
array_multisort(array_column($data, 'weight'),SORT_NUMERIC, SORT_ASC, $data);
输出结果:
array(3) {
[0]=>
array(2) { ["volume"]=> string(8) "id100212" ["weight"]=> string(1) "1" } [1]=> array(2) { ["volume"]=> string(8) "id100343" ["weight"]=> string(1) "4" } [2]=> array(2) { ["volume"]=> string(8) "id104104" ["weight"]=> string(2) "10" } }
按照weight进行排序(文本方式SORT_STRING):
array_multisort(array_column($data, 'weight'),SORT_STRING, SORT_ASC, $data);
array(3) {
[0]=>
array(2) { ["volume"]=> string(8) "id100212" ["weight"]=> string(1) "1" } [1]=> array(2) { ["volume"]=> string(8) "id104104" ["weight"]=> string(2) "10" } [2]=> array(2) { ["volume"]=> string(8) "id100343" ["weight"]=> string(1) "4" } }
需要注意10作为数字和文本的区别。