PHP 数组排序是一种常见且有用的技术,可以快速对数组进行排列,以便更方便地访问和管理数组中的数据。PHP提供了多种排序方法,包括按值排序、按键排序和自定义排序。可以使用sort()、rsort()、asort()、arsort()、ksort()、krsort()和usort()等内置函数进行排序操作。
PHP 数组排序
在 PHP 中,我们可以使用多种方法对数组进行排序。这些排序方法可以按照键和值对数组进行排序,并使用不同的算法来实现不同类型的排序。
1. sort()
sort() 函数用于对数组按照升序进行排序。sort() 函数可以用于对元素为数字的数组进行排序。它将返回 true(成功)或 false(失败)。
$arr = array(80, 60, 50, 70, 40, 90);
sort($arr);
print_r($arr); // 结果为 Array ( [0] => 40 [1] => 50 [2] => 60 [3] => 70 [4] => 80 [5] => 90 )
2. rsort()
rsort() 函数用于对数组按照降序进行排序。rsort() 函数可以用于对元素为数字的数组进行排序。它将返回 true(成功)或 false(失败)。
$arr = array(80, 60, 50, 70, 40, 90);
rsort($arr);
print_r($arr); // 结果为 Array ( [0] => 90 [1] => 80 [2] => 70 [3] => 60 [4] => 50 [5] => 40 )
3. asort()
asort() 函数用于对数组按照升序进行排序,并保留键值对关系。asort() 函数可以用于对元素为字符串的数组进行排序。它将返回 true(成功)或 false(失败)。
$arr = array("banana", "apple", "pear", "orange");
asort($arr);
print_r($arr); // 结果为 Array ( [1] => apple [0] => banana [3] => orange [2] => pear )
4. arsort()
arsort() 函数用于对数组按照降序进行排序,并保留键值对关系。arsort() 函数可以用于对元素为字符串的数组进行排序。它将返回 true(成功)或 false(失败)。
$arr = array("banana", "apple", "pear", "orange");
arsort($arr);
print_r($arr); // 结果为 Array ( [2] => pear [3] => orange [0] => banana [1] => apple )
5. ksort()
ksort() 函数按照键名对数组进行升序排列。ksort() 函数将保留键值和键与值之间的关联,并返回 true(成功)或 false(失败)。
$arr = array("b" => 2, "a" => 1, "c" => 3);
ksort($arr);
print_r($arr); // 结果为 Array ( [a] => 1 [b] => 2 [c] => 3 )
6. krsort()
krsort() 函数按照键名对数组进行降序排列。krsort() 函数将保留键值和键与值之间的关联,并返回 true(成功)或 false(失败)。
$arr = array("b" => 2, "a" => 1, "c" => 3);
krsort($arr);
print_r($arr); // 结果为 Array ( [c] => 3 [b] => 2 [a] => 1 )
7. usort()
usort() 函数使用用户自定义函数对数组进行排序。usort() 函数将返回 true(成功)或 false(失败)。
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$arr = array(80, 60, 50, 70, 40, 90);
usort($arr, "cmp");
print_r($arr); // 结果为 Array ( [4] => 40 [2] => 50 [1] => 60 [3] => 70 [0] => 80 [5] => 90 )
8. uasort()
uasort() 函数使用用户自定义函数对数组按照升序进行排序,并保留键值关系。uasort() 函数将返回 true(成功)或 false(失败)。
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$arr = array("banana" => 4, "apple" => 2, "pear" => 1, "orange" => 3);
uasort($arr, "cmp");
print_r($arr); // 结果为 Array ( [2] => pear [1] => apple [3] => orange [0] => banana )
9. uksort()
uksort() 函数使用用户自定义函数对数组按照键名进行排序。uksort() 函数将保留键值和键与值之间的关联,并返回 true(成功)或 false(失败)。
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$arr = array("b" => 2, "a" => 1, "c" => 3);
uksort($arr, "cmp");
print_r($arr); // 结果为 Array ( [a] => 1 [b] => 2 [c] => 3 )
以上是排序数组的九种方法,每种方法都可以在不同的场合中使用。在实际开发中,按照需求选择最适合的方法进行数组排序,能够更好的提高代码的效率。