PHP 数组排序
示例
php中有几个数组排序函数:
sort()
按值升序对数组进行排序。
$fruits = ['Zitrone', 'Orange', 'Banane', 'Apfel']; sort($fruits); print_r($fruits);
结果是
Array ( [0] => Apfel [1] => Banane [2] => Orange [3] => Zitrone )
rsort()
按值降序对数组进行排序。
$fruits = ['Zitrone', 'Orange', 'Banane', 'Apfel']; rsort($fruits); print_r($fruits);
结果是
Array ( [0] => Zitrone [1] => Orange [2] => Banane [3] => Apfel )
asort()
按值升序对数组进行排序,并保留指数。
$fruits = [1 => 'lemon', 2 => 'orange', 3 => 'banana', 4 => 'apple']; asort($fruits); print_r($fruits);
结果是
Array ( [4] => apple [3] => banana [1] => lemon [2] => orange )
arsort()
按值对数组进行降序排序并保留索引。
$fruits = [1 => 'lemon', 2 => 'orange', 3 => 'banana', 4 => 'apple']; arsort($fruits); print_r($fruits);
结果是
Array ( [2] => orange [1] => lemon [3] => banana [4] => apple )
ksort()
按键升序排列数组
$fruits = ['d'=>'lemon', 'a'=>'orange', 'b'=>'banana', 'c'=>'apple']; ksort($fruits); print_r($fruits);
结果是
Array ( [a] => orange [b] => banana [c] => apple [d] => lemon )
krsort()
按键以降序对数组进行排序。
$fruits = ['d'=>'lemon', 'a'=>'orange', 'b'=>'banana', 'c'=>'apple']; krsort($fruits); print_r($fruits);
结果是
Array ( [d] => lemon [c] => apple [b] => banana [a] => orange )
natsort()
以人类可以做的方式(自然顺序)对数组进行排序。
$files = ['File8.stack', 'file77.stack', 'file7.stack', 'file13.stack', 'File2.stack']; natsort($files); print_r($files);
结果是
Array ( [4] => File2.stack [0] => File8.stack [2] => file7.stack [3] => file13.stack [1] => file77.stack )
natcasesort()
以人类可以执行的方式(自然顺序)对数组进行排序,但是需要占用大量空间
$files = ['File8.stack', 'file77.stack', 'file7.stack', 'file13.stack', 'File2.stack']; natcasesort($files); print_r($files);
结果是
Array ( [4] => File2.stack [2] => file7.stack [0] => File8.stack [3] => file13.stack [1] => file77.stack )
shuffle()
随机排列数组(随机排序)。
$array = ['aa', 'bb', 'cc']; shuffle($array); print_r($array);
正如描述中所写,它是随机的,因此这里仅举一个例子
Array ( [0] => cc [1] => bb [2] => aa )
usort()
使用用户定义的比较函数对数组进行排序。
function compare($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } $array = [3, 2, 5, 6, 1]; usort($array, 'compare'); print_r($array);
结果是
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 )
uasort()
使用用户定义的比较功能对数组进行排序并保留键。
function compare($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } $array = ['a' => 1, 'b' => -3, 'c' => 5, 'd' => 3, 'e' => -5]; uasort($array, 'compare'); print_r($array);
结果是
Array ( [e] => -5 [b] => -3 [a] => 1 [d] => 3 [c] => 5 )
uksort()
使用用户定义的比较功能按键对数组进行排序。
function compare($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } $array = ['ee' => 1, 'g' => -3, '4' => 5, 'k' => 3, 'oo' => -5]; uksort($array, 'compare'); print_r($array);
结果是
Array ( [ee] => 1 [g] => -3 [k] => 3 [oo] => -5 [4] => 5 )