PHP函數(shù)array_multisort()實(shí)現(xiàn)多維數(shù)組排序的示例講解
對于PHP語言中的多維數(shù)組排序時最為復(fù)雜的一個排序方式。我們在實(shí)際編碼中將會用到PHP函數(shù)array_multisort()來實(shí)現(xiàn)這一復(fù)雜的排序。例如,首先對一個嵌套數(shù)組使用一個普通的關(guān)鍵字進(jìn)行排序,然后再根據(jù)另一個關(guān)鍵字進(jìn)行排序。這與使用SQL的ORDER BY語句對多個字段進(jìn)行排序非常相似。
#t#Listing J示例為我們具體說明了PHP函數(shù)array_multisort()的工作方式:
- <?php
- $data = array(array("id" => 1, "name" => "Boney M", "rating" => 3),
- array("id" => 2, "name" => "Take That", "rating" => 1),
- array("id" => 3, "name" => "The Killers", "rating" => 4),
- array("id" => 4, "name" => "Lusain", "rating" => 3),
- ); foreach ($data as $key => $value) {
- $name[$key] = $value['name'];
- $rating[$key] = $value['rating'];
- }
- array_multisort($rating, $name, $data); print_r($data);
- ?>
這里,我們在$data數(shù)組中模擬了一個行和列數(shù)組。然后,我使用PHP函數(shù)array_multisort()對數(shù)據(jù)集合進(jìn)行重排,首先是根據(jù)rating進(jìn)行排序,然后,如果rating相等的話,再根據(jù)name排序。它的輸出結(jié)果如下:
Array ([0] => Array
(
[id] => 2
[name] => Take That
[rating] => 1
) [1] => Array
(
[id] => 1
[name] => Boney M
[rating] => 3
)
[2] => Array
(
[id] => 4
[name] => Lusain
[rating] => 3
)
[3] => Array
(
[id] => 3
[name] => The Killers
[rating] => 4
)
)
PHP函數(shù)array_multisort()是PHP中最有用的函數(shù)之一,它有非常廣泛的應(yīng)用范圍。另外,就如你在例子中所看到的,它能對多個不相關(guān)的數(shù)組進(jìn)行排序,也可以使用其中的一個元素作為下次排序的基礎(chǔ),還可以對數(shù)據(jù)庫結(jié)果集進(jìn)行排序。