PHP 数组排序

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

用于数组排序的 PHP 函数

在上一章中,你已经了解了 PHP 数组的基本要素,即数组是什么,如何创建它们,如何查看它们的结构,如何访问它们的元素等等。你可以使用数组做更多的事情,比如在任何数组中对元素进行排序。

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

  • sort()rsort() - 用于排序索引数组
  • asort()arsort() - 用于按值排序关联数组
  • ksort()krsort() - 用于按键排序关联数组

按升序排序索引数组

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

<?php
// Define array
$colors = array("Red", "Green", "Blue", "Yellow");
 
// Sorting and printing array
sort($colors);
print_r($colors);
?>

print_r() 语句给出以下输出:

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

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

<?php
// Define array
$numbers = array(1, 2, 2.5, 4, 7, 10);
 
// Sorting and printing array
sort($numbers);
print_r($numbers);
?>

print_r() 语句给出以下输出:

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

按降序排序索引数组

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

<?php
// Define array
$colors = array("Red", "Green", "Blue", "Yellow");
 
// Sorting and printing array
rsort($colors);
print_r($colors);
?>

print_r() 语句给出以下输出:

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

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

<?php
// Define array
$numbers = array(1, 2, 2.5, 4, 7, 10);
 
// Sorting and printing array
rsort($numbers);
print_r($numbers);
?>

print_r() 语句给出以下输出:

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

按值升序按升序排序关联数组

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

<?php
// Define array
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
 
// Sorting array by value and print
asort($age);
print_r($age);
?>

print_r() 语句给出以下输出:

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

按值降序排序关联数组

arsort() 函数根据值按降序对关联数组的元素进行排序。它的工作方式就像 rsort() ,但它在排序时保留了键与其值之间的关联。

<?php
// Define array
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
 
// Sorting array by value and print
arsort($age);
print_r($age);
?>

print_r() 语句给出以下输出:

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

按键按升序排序关联数组

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

<?php
// Define array
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
 
// Sorting array by key and print
ksort($age);
print_r($age);
?>

print_r() 语句给出以下输出:

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

按键降序排序关联数组

krsort() 函数按其键按降序对关联数组的元素进行排序。它在排序时保留键与其值之间的关联,与 arsort() 功能相同。

<?php
// Define array
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
 
// Sorting array by key and print
krsort($age);
print_r($age);
?>

print_r() 语句给出以下输出:

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