在PHP中,数组排序是一个常见的操作。PHP提供了多种内置函数来对数组进行排序,每种函数适用于不同的场景。以下是几种常见的数组排序方法:
sort()
函数php
$numbers = array(4, 2, 8, 6);
sort($numbers);
print_r($numbers);
// 输出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
rsort()
函数php
$numbers = array(4, 2, 8, 6);
rsort($numbers);
print_r($numbers);
// 输出: Array ( [0] => 8 [1] => 6 [2] => 4 [3] => 2 )
asort()
函数php
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);
asort($age);
print_r($age);
// 输出: Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
arsort()
函数php
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);
arsort($age);
print_r($age);
// 输出: Array ( [Joe] => 43 [Ben] => 37 [Peter] => 35 )
ksort()
函数php
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);
ksort($age);
print_r($age);
// 输出: Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 )
krsort()
函数php
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);
krsort($age);
print_r($age);
// 输出: Array ( [Peter] => 35 [Joe] => 43 [Ben] => 37 )
usort()
函数示例:
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$numbers = array(4, 2, 8, 6);
usort($numbers, "cmp");
print_r($numbers);
// 输出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
uasort()
函数示例:
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);
uasort($age, "cmp");
print_r($age);
// 输出: Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
uksort()
函数示例:
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);
uksort($age, "cmp");
print_r($age);
// 输出: Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 )
natsort()
函数php
$files = array("img12.png", "img10.png", "img2.png", "img1.png");
natsort($files);
print_r($files);
// 输出: Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )
natcasesort()
函数php
$files = array("img12.png", "Img10.png", "img2.png", "Img1.png");
natcasesort($files);
print_r($files);
// 输出: Array ( [3] => Img1.png [2] => img2.png [1] => Img10.png [0] => img12.png )
array_multisort()
函数示例:
$data = array(
array("volume" => 67, "edition" => 2),
array("volume" => 86, "edition" => 1),
array("volume" => 85, "edition" => 6),
array("volume" => 98, "edition" => 2),
array("volume" => 86, "edition" => 6),
array("volume" => 67, "edition" => 7),
);
$volumes = array_column($data, 'volume');
$editions = array_column($data, 'edition');
array_multisort($volumes, SORT_DESC, $editions, SORT_ASC, $data);
print_r($data);
// 输出: Array ( [0] => Array ( [volume] => 98 [edition] => 2 ) [1] => Array ( [volume] => 86 [edition] => 1 ) [2] => Array ( [volume] => 86 [edition] => 6 ) [3] => Array ( [volume] => 85 [edition] => 6 ) [4] => Array ( [volume] => 67 [edition] => 2 ) [5] => Array ( [volume] => 67 [edition] => 7 ) )
PHP提供了丰富的数组排序函数,可以根据不同的需求选择合适的函数。常见的排序函数包括sort()
、rsort()
、asort()
、arsort()
、ksort()
、krsort()
、usort()
、uasort()
、uksort()
、natsort()
、natcasesort()
和array_multisort()
。根据数组的类型(索引数组或关联数组)以及排序的需求(升序、降序、自然排序等),可以选择合适的函数来实现排序。