Content

php之二维数组排序问题(php二维数组的遍历是什么)怎么可以错过

文章摘要

本文展示了如何在PHP中实现一个通用性的二维数组排序函数`array_sort`。该函数允许用户自定义排序键和排序方向(升序或降序),并使用`uasort`实现多键排序。测试部分通过将多键排序选项传递给函数,验证了其排序功能的正确性。文章通过代码示例和测试结果,突出了函数的灵活性和实用性。

<?php // 二维数组排序算法函数,能够具有通用性,可以调用php内置函数。 function array_sort(&$arr, $order=[]){ $result=[]; if (empty($arr)) { return $result; } uasort($arr, function ($a, $b) use ($order) { foreach ($order as $key=> $sort) { array_shift($order); if ($a[$key]==$b[$key]) { continue; } if ($sort===’DESC’) { return ($a[$key] > $b[$key]) ? -1 : 1; } else { return ($a[$key] > $b[$key]) ? 1 : -1; } } return 0; }); foreach ($arr as $value) { $result[]=$value; } return $arr=$result; } // 测试 $ps=array( array(‘id’=> 1, ‘name’=> ‘zhangcan’, ‘age’=> 13), array(‘id’=> 2, ‘name’=> ‘lisi’, ‘age’=> 16), array(‘id’=> 3, ‘name’=> ‘wangwu’, ‘age’=> 17), array(‘id’=> 4, ‘name’=> ‘wangwu’, ‘age’=> 18), ); // $ret=array_sort($person, [‘name’=> ‘ASC’]); $ret=array_sort($ps, [‘name’=>’ASC’, ‘age’=>’DESC’]); print_r($ret);