📅  最后修改于: 2023-12-03 14:45:24.030000             🧑  作者: Mango
在PHP中,我们常常需要对多维数组进行排序。这时,如果希望按照某一个子值进行排序,我们可以使用PHP中的usort函数。
usort ( array &$array , callable $value_compare_func ) : bool
$array
:需要排序的多维数组。$value_compare_func
:比较函数,用于定义排序规则。比较函数需要接收两个参数,它们分别是需要比较的两个元素。函数需要返回一个 int
类型的值,表示两个元素的大小关系。
比较函数的示例:
function cmp($a, $b) {
if ($a['age'] == $b['age']) {
return 0;
}
return ($a['age'] < $b['age']) ? -1 : 1;
}
上述示例中, cmp 函数按照数组元素的 age
值进行比较。如果两个元素的 age
值相等,函数返回 0
,表示两个元素相等。如果 $a
的 age
值小于 $b
的 age
值,函数返回 -1
;反之,函数返回 1
。
对多维数组按子值排序的步骤如下:
usort()
函数按照比较函数的规则,对多维数组进行排序。排序操作的示例:
$players = array(
array('name' => 'John', 'age' => 28),
array('name' => 'Ben', 'age' => 27),
array('name' => 'Liam', 'age' => 23),
array('name' => 'Lucas', 'age' => 26),
);
function cmp($a, $b) {
if ($a['age'] == $b['age']) {
return 0;
}
return ($a['age'] < $b['age']) ? -1 : 1;
}
usort($players, "cmp");
print_r($players);
上述示例中,我们定义了一个 $players
数组,其中每一个元素都是一个由 name
和 age
两个元素组成的子数组。之后,我们定义了一个 cmp
函数,用于按照 age
值排序。最后,我们使用 usort()
函数对 $players
数组进行排序。排序完毕后,我们使用 print_r()
函数输出排序结果。
程序输出结果:
Array
(
[0] => Array
(
[name] => Liam
[age] => 23
)
[1] => Array
(
[name] => Lucas
[age] => 26
)
[2] => Array
(
[name] => Ben
[age] => 27
)
[3] => Array
(
[name] => John
[age] => 28
)
)
PHP中的 usort()
函数可以用于对多维数组按照指定的子值进行排序,只需定义一个比较函数即可。对于需要排序的多维数组,我们可以根据需要进行调整。