当我们需要对 PHP 数组进行排序时,通常会使用 sort() 或者 usort() 函数,但这些函数只能对一维数组进行排序。当数组是多维结构时,我们需要使用递归的方式进行实现。
以下是一个 PHP 数组递归排序的示例实现:
定义待排序的数组
$student_scores = [
"class 1" => [
"Peter" => 70,
"Lisa" => 80,
"Mike" => 65,
"Joy" => 90
],
"class 2" => [
"Bobby" => 87,
"Mary" => 77,
"Jack" => 92,
"Daisy" => 68
],
"class 3" => [
"David" => 82,
"Lucy" => 87,
"John" => 73,
"Kate" => 94
]
];
以上示例中,我们定义了一个包含三个班级学生分数的多维数组,并将其存储在 $student_scores 变量中。
实现递归排序
function recursive_sort(&$array) {
foreach ($array as &$value) {
if (is_array($value)) {
recursive_sort($value);
}
}
if (is_array($array)) {
ksort($array);
}
}
以上代码中,我们定义了一个名为 recursive_sort() 的函数,该函数使用 foreach 循环遍历数组,如果 $value 是一个数组,则递归调用函数本身。当 $array 不再是数组时,使用 ksort() 函数对其进行排序。
调用递归排序函数
recursive_sort($student_scores);
最后,我们直接调用 recursive_sort() 函数,并传入待排序的数组 $student_scores 作为参数即可。
示例输出结果为:
Array
(
[class 1] => Array
(
[Joy] => 90
[Lisa] => 80
[Mike] => 65
[Peter] => 70
)
[class 2] => Array
(
[Bobby] => 87
[Daisy] => 68
[Jack] => 92
[Mary] => 77
)
[class 3] => Array
(
[David] => 82
[John] => 73
[Kate] => 94
[Lucy] => 87
)
)
以上示例中,我们使用 ksort() 对学生分数进行了排序,并按班级展示了最终结果。
另外一个示例是,当我们需要按照价格从高到低对商品列表进行排序时,可以使用以下代码:
function sort_products(&$products) {
foreach ($products as &$product) {
if (is_array($product)) {
sort_products($product);
}
}
usort($products, function($a, $b) {
return $b['price'] - $a['price'];
});
}
以上代码使用 usort() 对商品列表进行排序,并按价格从高到低输出排序结果。
如有疑问,欢迎随时追问。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP数组递归排序实现方法示例 - Python技术站