在本教程中,您將學(xué)習(xí)如何在PHP中按升序或降序?qū)?shù)組的元素 或 鍵進行排序。
在上一章中,您已經(jīng)學(xué)習(xí)了PHP數(shù)組的基本知識,即什么是數(shù)組,如何創(chuàng)建它們,如何查看它們的結(jié)構(gòu),如何訪問它們的元素等。您可以使用數(shù)組做更多的事情,比如按照您指定的順序?qū)υ剡M行排序。
PHP附帶了許多內(nèi)置函數(shù),這些函數(shù)專門設(shè)計用于以不同的方式對數(shù)組元素進行排序,例如按字母或數(shù)字的升序或降序。在這里,我們將探討一些最常用于數(shù)組排序的函數(shù)。
sort() 和 rsort() — 對索引數(shù)組進行排序
asort() 和 arsort() — 用于按值對關(guān)聯(lián)數(shù)組進行排序
ksort() 和 krsort() — 用于按鍵對關(guān)聯(lián)數(shù)組進行排序
sort()函數(shù)用于按升序?qū)λ饕龜?shù)組的元素進行排序(字母按字母順序,數(shù)字按數(shù)字)。
<?php //定義數(shù)組 $colors = array("Red", "Green", "Blue", "Yellow"); //排序和打印數(shù)組 sort($colors); print_r($colors); ?>測試看看?/?
print_r() 語句提供以下輸出:
Array ( [0] => Blue [1] => Green [2] => Red [3] => Yellow )
同樣,您可以按升序?qū)?shù)組的數(shù)字元素進行排序。
<?php //定義數(shù)組 $numbers = array(1, 2, 2.5, 4, 7, 10); //排序和打印數(shù)組 sort($numbers); print_r($numbers); ?>測試看看?/?
print_r() 語句提供以下輸出:
Array ( [0] => 1 [1] => 2 [2] => 2.5 [3] => 4 [4] => 7 [5] => 10 )
rsort()函數(shù)用于按降序?qū)λ饕龜?shù)組的元素進行排序(字母順序按字母,數(shù)字順序按數(shù)字)。
<?php //定義數(shù)組 $colors = array("Red", "Green", "Blue", "Yellow"); // 排序和打印數(shù)組 rsort($colors); print_r($colors); ?>測試看看?/?
print_r() 語句提供以下輸出:
Array ( [0] => Yellow [1] => Red [2] => Green [3] => Blue )
同樣,您可以按降序?qū)?shù)組的數(shù)字元素進行排序。
<?php //定義數(shù)組 $numbers = array(1, 2, 2.5, 4, 7, 10); //排序和打印數(shù)組 rsort($numbers); print_r($numbers); ?>測試看看?/?
print_r() 語句提供以下輸出:
Array ( [0] => 10 [1] => 7 [2] => 4 [3] => 2.5 [4] => 2 [5] => 1 )
asort()函數(shù)根據(jù)值按升序?qū)﹃P(guān)聯(lián)數(shù)組的元素進行排序。 它的工作方式類似于sort(),但在排序時保留了鍵及其值之間的關(guān)聯(lián)。
<?php //定義數(shù)組 $age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35); //按值對數(shù)組排序并打印 asort($age); print_r($age); ?>測試看看?/?
print_r() 語句提供以下輸出:
Array ( [Harry] => 14 [Peter] => 20 [Clark] => 35 [John] => 45 )
arsort()函數(shù)根據(jù)該值以降序?qū)﹃P(guān)聯(lián)數(shù)組的元素進行排序。 它的工作方式與rsort()相似,但是在排序時會保留鍵及其值之間的關(guān)聯(lián)。
<?php //定義數(shù)組 $age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35); //按值對數(shù)組排序并打印 arsort($age); print_r($age); ?>測試看看?/?
print_r() 語句提供以下輸出:
Array ( [John] => 45 [Clark] => 35 [Peter] => 20 [Harry] => 14 )
ksort()函數(shù)按鍵的升序?qū)﹃P(guān)聯(lián)數(shù)組的元素進行排序。與asort()函數(shù)相同,它在排序時保留鍵及其值之間的關(guān)聯(lián)。
<?php //定義數(shù)組 $age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35); //按鍵排序數(shù)組并打印 ksort($age); print_r($age); ?>測試看看?/?
print_r() 語句提供以下輸出:
Array ( [Clark] => 35 [Harry] => 14 [John] => 45 [Peter] => 20 )
ksort()函數(shù)通過鍵對其升序?qū)﹃P(guān)聯(lián)數(shù)組的元素進行排序。 與asort()函數(shù)相同,它在排序時保留鍵及其值之間的關(guān)聯(lián)。
<?php //定義數(shù)組 $age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35); //按鍵排序數(shù)組并打印 krsort($age); print_r($age); ?>測試看看?/?
print_r()語句提供以下輸出:
Array ( [Peter] => 20 [John] => 45 [Harry] => 14 [Clark] => 35 )