1. PHP实现二维数组按照指定的字段进行排序算法示例
本文将介绍一种PHP实现二维数组按照指定的字段进行排序的算法。假设有以下二维数组:
$arr = array(
array('id'=>1, 'name'=>'Alice', 'age'=>30),
array('id'=>2, 'name'=>'Lily', 'age'=>25),
array('id'=>3, 'name'=>'Lucy', 'age'=>40),
array('id'=>4, 'name'=>'Tom', 'age'=>20),
array('id'=>5, 'name'=>'John', 'age'=>35),
array('id'=>6, 'name'=>'David', 'age'=>28)
);
1.1 使用usort函数进行排序
PHP提供了usort函数,可以根据自定义排序规则对数组进行排序。我们可以自定义一个比较函数,根据指定的字段进行比较。
function cmp($a, $b)
{
if ($a['age'] == $b['age']) {
return 0;
}
return ($a['age'] < $b['age']) ? -1 : 1;
}
usort($arr, 'cmp');
print_r($arr);
运行结果:
Array
(
[0] => Array
(
[id] => 4
[name] => Tom
[age] => 20
)
[1] => Array
(
[id] => 2
[name] => Lily
[age] => 25
)
[2] => Array
(
[id] => 6
[name] => David
[age] => 28
)
[3] => Array
(
[id] => 1
[name] => Alice
[age] => 30
)
[4] => Array
(
[id] => 5
[name] => John
[age] => 35
)
[5] => Array
(
[id] => 3
[name] => Lucy
[age] => 40
)
)
1.2 封装为函数
我们可以根据需要封装为函数,方便以后使用。
function arraySort($arr, $field)
{
$cmp = function ($a, $b) use ($field) {
if ($a[$field] == $b[$field]) {
return 0;
}
return ($a[$field] < $b[$field]) ? -1 : 1;
};
usort($arr, $cmp);
return $arr;
}
$arr = arraySort($arr, 'age');
print_r($arr);
运行结果同上。
2. 总结
在PHP中,我们可以使用usort函数进行自定义排序,非常方便快捷。上述算法仅仅实现了根据指定字段进行排序,如果你需要进行更复杂的排序,可以自定义更复杂的比较函数。
参考文献:
[1] PHP手册 - usort函数。https://www.php.net/manual/zh/function.usort.php