博客
关于我
1.12 PHP 数组排序——《跟老吕学PHP》
阅读量:798 次
发布时间:2023-03-29

本文共 3623 字,大约阅读时间需要 12 分钟。

PHP 数组排序

PHP 数组排序函数

PHP 提供了多种数组排序函数,允许开发者根据数组中的值或键对数组进行排序。以下是常用的 PHP 数组排序函数及其用法:

1. sort()

sort() 函数用于对数组进行升序排列。它会重新索引数组,并返回排序后的数组(原数组也会被改变)。

用法示例:

$fruits = array("lemon", "apple", "banana", "orange");sort($fruits);print_r($fruits); // 输出: Array ( [0] => apple [1] => banana [2] => lemon [3] => orange )

2. rsort()

rsort() 函数与 sort() 类似,但它会对数组进行降序排序。

用法示例:

$fruits = array("lemon", "apple", "banana", "orange");rsort($fruits);print_r($fruits); // 输出: Array ( [0] => orange [1] => lemon [2] => banana [3] => apple )

3. asort()

asort() 函数对数组进行升序排序,但保持索引关系。它不会重新索引数组。

用法示例:

$prices = array("apple" => 2, "banana" => 1, "orange" => 3);asort($prices);print_r($prices); // 输出: Array ( [banana] => 1 [apple] => 2 [orange] => 3 )

4. ksort()

ksort() 函数根据数组的键名进行升序排序。它会修改原数组并返回 TRUE。

用法示例:

$fruits = array("banana" => 1, "apple" => 2, "lemon" => 3);ksort($fruits);print_r($fruits); // 输出: Array ( [apple] => 2 [banana] => 1 [lemon] => 3 )

5. arsort()

arsort() 函数与 asort() 类似,但它对数组进行降序排序。

用法示例:

$prices = array("apple" => 2, "banana" => 1, "orange" => 3);arsort($prices);print_r($prices); // 输出: Array ( [orange] => 3 [apple] => 2 [banana] => 1 )

6. krsort()

krsort() 函数与 ksort() 类似,但它按照键名进行降序排序。

用法示例:

$fruits = array("banana" => 1, "apple" => 2, "lemon" => 3);krsort($fruits);print_r($fruits); // 输出: Array ( [lemon] => 3 [banana] => 1 [apple] => 2 )

7. usort()

usort() 函数使用用户自定义的比较函数对数组进行排序。

用法示例:

function compare($a, $b) {    if ($a == $b) {        return 0;    }    return ($a < $b) ? -1 : 1;}$numbers = array(4, 2, 8, 6);usort($numbers, "compare");print_r($numbers); // 输出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )

8. uasort()

uasort() 函数与 usort() 类似,但它会保持索引关系。

用法示例:

function compareFruit($a, $b) {    return strcmp($a['name'], $b['name']);}$fruits = array(    array('name' => 'banana', 'calories' => 105),    array('name' => 'apple', 'calories' => 52),    array('name' => 'lemon', 'calories' => 20));uasort($fruits, "compareFruit");print_r($fruits); // 输出: Array ( [2] => Array ( [name] => lemon [calories] => 20 ) [1] => Array ( [name] => apple [calories] => 52 ) [0] => Array ( [name] => banana [calories] => 105 ) )

9. uksort()

uksort() 函数按照键名对数组进行排序,使用用户自定义的比较函数。

用法示例:

function compareKeys($a, $b) {    return strlen($a) - strlen($b);}$ages = array(    'Alice' => 30,    'Bob' => 25,    'Charlie' => 35,    'David' => 20);uksort($ages, "compareKeys");print_r($ages); // 输出: Array ( [David] => 20 [Bob] => 25 [Alice] => 30 [Charlie] => 35 )

10. natsort()

natsort() 函数实现了“自然排序”,用于对字符串数组进行排序。

用法示例:

$numbers = array("img1.png", "img10.png", "img2.png", "img12.png");natsort($numbers);print_r($numbers); // 输出: Array ( [0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png )

11. natcasesort()

natcasesort() 函数与 natsort() 类似,但它不区分大小写。

用法示例:

$fruits = array("apple", "Banana", "cherry", "Date", "apple10", "cherry2", "Banana5");natcasesort($fruits);print_r($fruits); // 输出: Array ( [0] => apple [1] => apple10 [2] => Banana [3] => Banana5 [4] => cherry [5] => cherry2 [6] => Date )

12. array_multisort()

array_multisort() 函数可以对一个或多个数组进行排序,甚至可以对关联数组的键进行排序。

用法示例:

$names = array("John", "Bob", "Alice", "David");$scores = array(85, 92, 78, 92);array_multisort($scores, SORT_DESC, $names);for ($i = 0; $i < count($names); $i++) {    echo "Name: " . $names[$i] . ", Score: " . $scores[$i] . "\n";}

输出将是:

Name: Bob, Score: 92Name: David, Score: 92Name: John, Score: 85Name: Alice, Score: 78

注意事项

  • 在使用排序函数时,请注意原始数组是否会被修改。某些函数(如 sort())会修改原始数组,而其他函数(如 asort())则会保留原始数组并返回一个新的排序数组。
  • 如果需要根据特定的排序规则对数组进行排序,请使用 usort()uasort() 函数,并定义适当的比较函数。
  • 当对关联数组进行排序时,请注意键名和值之间的关联关系。某些排序函数(如 sort())会重新索引键名,而其他函数(如 asort())则会保留原始键名。

转载地址:http://krhfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现hanning 窗(附完整源码)
查看>>
Objective-C实现hanoiTower汉诺塔算法(附完整源码)
查看>>
Objective-C实现hardy ramanujana定理算法(附完整源码)
查看>>
Objective-C实现highest response ratio next高响应比优先调度算法(附完整源码)
查看>>
Objective-C实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)
查看>>
Objective-C实现hornerMethod霍纳法算法(附完整源码)
查看>>
Objective-C实现Http Post请求(附完整源码)
查看>>
Objective-C实现Http协议下载文件(附完整源码)
查看>>
Objective-C实现IIR 滤波器算法(附完整源码)
查看>>
Objective-C实现IIR数字滤波器(附完整源码)
查看>>
Objective-C实现insertion sort插入排序算法(附完整源码)
查看>>
Objective-C实现integer partition整数分区算法(附完整源码)
查看>>
Objective-C实现integerPartition整数划分算法(附完整源码)
查看>>
Objective-C实现interpolation search插值搜索算法(附完整源码)
查看>>
Objective-C实现Interpolation search插值查找算法(附完整源码)
查看>>
Objective-C实现intersection交集算法(附完整源码)
查看>>
Objective-C实现intro sort内省排序算法(附完整源码)
查看>>
Objective-C实现inversions倒置算法(附完整源码)
查看>>
Objective-C实现isalpha函数功能(附完整源码)
查看>>
Objective-C实现islower函数功能(附完整源码)
查看>>