PHP实现二维数组按照指定的字段进行排序算法示

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

后端开发标签