PHP下對數組進行排序的函數

簡單排序
首先,讓咱們來看看最簡單的狀況:將一個數組元素從低到高進行簡單排序,這個函數既能夠按數字大小排列也能夠按字母順序排列。PHP的sort()函數實現了這個功能,如Listing A所示:
Listing A php

<?php
$data = array(5,8,1,7,2);
sort($data);
print_r($data);
?>


輸出結果以下所示: 算法

Array ([0] => 1
[1] => 2
[2] => 5
[3] => 7
[4] => 8
 
Rsort()函數對數組元素進行從高到低的倒排,一樣能夠按數字大小排列也能夠按字母順序排列。
Listing B給咱們展現了它的一個例子:
Listing B
複製代碼 代碼以下:

<?php $data = array(5,8,1,7,2);rsort($data); print_r($data);
?>

它的輸出結果以下:
複製代碼 代碼以下:

Array ([0] => 8
[1] => 7
[2] => 5
[3] => 2
[4] => 1
 
根據關鍵字排序
當咱們使用數組的時候,常常根據關鍵字對數組從新排序,從高到低。 Ksort()函數就是根據關鍵字進行排序的函數,同時,它在排序的過程當中會保持關鍵字的相關性。Listing C就是一個例子:
Listing C
複製代碼 代碼以下:

<?php $data = array(「US」 => 「United States」, 「IN」 => 「India」, 「DE」 => 「Germany」, 「ES」 => 「Spain」);ksort($data); print_r($data);
?>

它的輸出結果以下:
複製代碼 代碼以下:

Array ([DE] => Germany
[ES] => Spain
[IN] => India
[US] => United States
)

Krsort()函數是根據關鍵字對數組進行倒排,Listing D就是這樣的例子:
Listing D
複製代碼 代碼以下:

<?php $data = array(「US」 => 「United States」, 「IN」 => 「India」, 「DE」 => 「Germany」, 「ES」 => 「Spain」);krsort($data); print_r($data);
?>

它的輸出結果以下:
複製代碼 代碼以下:

Array ([US] => United States
[IN] => India
[ES] => Spain
[DE] => Germany
 
根據值排序
若是你想使用值排序來取代關鍵字排序的話,PHP也能知足你的要求。你只要使用 asort()函數來代替先前提到的ksort()函數就能夠了。如Listing E所示:
Listing E
複製代碼 代碼以下:

<?php $data = array(「US」 => 「United States」, 「IN」 => 「India」, 「DE」 => 「Germany」, 「ES」 => 「Spain」);asort($data); print_r($data);
?>

下面就是它的輸出結果。請注意這個結果與上面使用ksort()函數所獲得的結果的不一樣——在這兩種狀況中,都是按字母順序進行排序的,可是它們是根據數組的不一樣字段進行排序的。
同時,請注意關鍵字-值之間的聯繫會始終保持;它只是關鍵字-值對排序後的一種方式,排序並不會改變它們的對應關係。
Array ([DE] => Germany
[IN] => India
[ES] => Spain
[US] => United States
)
如今 ,你確定能猜到這種排序也能夠進行倒排,它使用arsort()函數完成這個功能。Listing F就是一個例子:
Listing F
複製代碼 代碼以下:

<?php $data = array(「US」 => 「United States」, 「IN」 => 「India」, 「DE」 => 「Germany」, 「ES」 => 「Spain」);arsort($data); print_r($data);
?>

下面是它的輸出結果,根據值按字母表順序進行倒排。將下面的結果與用krsort()函數進行倒排後生成的結果進行比較,就能很容易明白二者的不一樣了。
複製代碼 代碼以下:

Array ([US] => United States
[ES] => Spain
[IN] => India
[DE] => Germany
 
天然語言排序
PHP有一個很是獨特的排序方式,這種方式使用認知而不是使用計算規則。這種特性稱爲天然語言排序,當建立模糊邏輯應用軟件的時候這種排序方式很是有用。下面你們能夠來看看它的一個簡單例子,如Listing G所示:
Listing G
複製代碼 代碼以下:

<?php $data = array(「book-1″, 「book-10″, 「book-100″, 「book-5″); sort($data);print_r($data);
natsort($data); print_r($data);?>

它的輸出結果以下:
複製代碼 代碼以下:

Array ([0] => book-1
[1] => book-10
[2] => book-100
[3] => book-5
)
Array
(
[0] => book-1
[3] => book-5
[1] => book-10
[2] => book-100
)

它們的不一樣已經很清楚了:第二個排序結果更直觀,更「人性化」,然而第一個則更符合算法規則,更具「計算機」特色。 
 
天然語言能進行倒排嗎?答案是確定的! 只要對natsort()的結果使用array_reverse()函數就能夠了,Listing H就是一個簡單例子:
Listing H
複製代碼 代碼以下:

<?php $data = array(「book-1″, 「book-10″, 「book-100″, 「book-5″);natsort($data); print_r(array_reverse($data));
?>

下面是它的輸出結果:
複製代碼 代碼以下:
Array ([0] => book-100 [1] => book-10 [2] => book-5 [3] => book-1 ) 
相關文章
相關標籤/搜索