PHP 数组排序

在本教程中,您将学习如何在PHP中按升序或降序对数组的元素 或 键进行排序。

PHP函数对数组进行排序

在上一章中,您已经学习了PHP数组的基本知识,即什么是数组,如何创建它们,如何查看它们的结构,如何访问它们的元素等。您可以使用数组做更多的事情,比如按照您指定的顺序对元素进行排序。

PHP附带了许多内置函数,这些函数专门设计用于以不同的方式对数组元素进行排序,例如按字母或数字的升序或降序。在这里,我们将探讨一些最常用于数组排序的函数。

  • sort() 和 rsort() — 对索引数组进行排序

  • asort() 和 arsort() — 用于按值对关联数组进行排序

  • ksort() 和 krsort() — 用于按键对关联数组进行排序

升序排序索引数组

sort()函数用于按升序对索引数组的元素进行排序(字母按字母顺序,数字按数字)。

<?php
//定义数组
$colors = array("Red", "Green", "Blue", "Yellow");
 
//排序和打印数组
sort($colors);
print_r($colors);
?>
测试看看‹/›

print_r() 语句提供以下输出:

 Array ( [0] => Blue [1] => Green [2] => Red [3] => Yellow )

同样,您可以按升序对数组的数字元素进行排序。

<?php
//定义数组
$numbers = array(1, 2, 2.5, 4, 7, 10);
 
//排序和打印数组
sort($numbers);
print_r($numbers);
?>
测试看看‹/›

print_r() 语句提供以下输出:

Array ( [0] => 1 [1] => 2 [2] => 2.5 [3] => 4 [4] => 7 [5] => 10 )

按降序对索引数组排序

rsort()函数用于按降序对索引数组的元素进行排序(字母顺序按字母,数字顺序按数字)。

<?php
//定义数组
$colors = array("Red", "Green", "Blue", "Yellow");
 
// 排序和打印数组
rsort($colors);
print_r($colors);
?>
测试看看‹/›

print_r() 语句提供以下输出:

Array ( [0] => Yellow [1] => Red [2] => Green [3] => Blue )

同样,您可以按降序对数组的数字元素进行排序。

<?php
//定义数组
$numbers = array(1, 2, 2.5, 4, 7, 10);
 
//排序和打印数组
rsort($numbers);
print_r($numbers);
?>
测试看看‹/›

print_r() 语句提供以下输出:

Array ( [0] => 10 [1] => 7 [2] => 4 [3] => 2.5 [4] => 2 [5] => 1 )

按值升序对关联数组进行排序

asort()函数根据值按升序对关联数组的元素进行排序。 它的工作方式类似于sort(),但在排序时保留了键及其值之间的关联。

<?php
//定义数组
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
 
//按值对数组排序并打印
asort($age);
print_r($age);
?>
测试看看‹/›

print_r() 语句提供以下输出:

Array ( [Harry] => 14 [Peter] => 20 [Clark] => 35 [John] => 45 )

按值降序对关联数组进行排序

arsort()函数根据该值以降序对关联数组的元素进行排序。 它的工作方式与rsort()相似,但是在排序时会保留键及其值之间的关联。

<?php
//定义数组
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
 
//按值对数组排序并打印
arsort($age);
print_r($age);
?>
测试看看‹/›

print_r() 语句提供以下输出:

Array ( [John] => 45 [Clark] => 35 [Peter] => 20 [Harry] => 14 )

按键升序对关联数组进行排序

ksort()函数按键的升序对关联数组的元素进行排序。与asort()函数相同,它在排序时保留键及其值之间的关联。

<?php
//定义数组
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
 
//按键排序数组并打印
ksort($age);
print_r($age);
?>
测试看看‹/›

print_r() 语句提供以下输出:

Array ( [Clark] => 35 [Harry] => 14 [John] => 45 [Peter] => 20 )

按键降序对关联数组进行排序

ksort()函数通过键对其升序对关联数组的元素进行排序。 与asort()函数相同,它在排序时保留键及其值之间的关联。

<?php
//定义数组
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
 
//按键排序数组并打印
krsort($age);
print_r($age);
?>
测试看看‹/›

print_r()语句提供以下输出:

Array ( [Peter] => 20 [John] => 45 [Harry] => 14 [Clark] => 35 )