PHP常用的数组操作函数-排序
排序
sort — 对数组升序排序
rsort — 对数组降序排序
krsort — 对数组按照键名逆向排序
ksort — 对数组根据键名升序排序
arsort — 对数组进行降向排序并保持索引关系
asort — 对数组进行升序排序并保持索引关系
usort—使用用户自定义的比较函数对数组中的值进行排序
<?php
function cmp($a, $b)
{
if ($a['sort'] == $b['sort']) {
return 0;
}
return ($a['sort'] > $b['sort']) ? -1 : 1;
}
$a = array(
['sort' => 3],
['sort' => 1],
['sort' => 2],
['sort' => 8],
['sort' => 5],
);
usort($a, "cmp");
var_dump($a);
uasort — 使用用户定义的比较函数对数组进行排序并保持索引关联
<?php
// 比较函数
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
// 要排序的数组
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);
// 排序并打印排序后的数组
uasort($array, 'cmp');
print_r($array);
array_multisort — 对多个数组或多维数组进行排序
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
$volume = array_column($data, 'volume');
$edition = array_column($data, 'edition');
//先按volume做降序,再按edition做增序,最后把结果合并到$data
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
print_r($data);
natsort — 用“自然排序”算法对数组排序
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
asort($array1);
echo "Standard sorting\n";
print_r($array1);
/*
Array
(
[3] => img1.png
[1] => img10.png
[0] => img12.png
[2] => img2.png
)
*/
natsort($array2);
echo "\nNatural order sorting\n";
print_r($array2);
/*
Array
(
[3] => img1.png
[2] => img2.png
[1] => img10.png
[0] => img12.png
)
*/
相关: natcasesort — 用“自然排序”算法对数组进行不区分大小写字母的排序