PHP常用的数组操作函数-排序

153 阅读1分钟

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 — 用“自然排序”算法对数组进行不区分大小写字母的排序