簡介:這是PHP二維數組排序的詳細頁面,介紹了和php,php PHP二維數組排序有關的知識、技巧、經驗,和一些php源碼等。
class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=358569' scrolling='no'>
PHP本身是有一個多維陣列排序的函數的。
bool
array_multisort
( array
$ar1
[, mixed
$arg
[, mixed
$...
[, array
$...
]]] )
下面是手冊當中對於array_multisort函數的描述:
array_multisort() 可以用來一次對多個數組進行排序,或者根據某一維或多維對多維陣列進行排序。
關聯(string)鍵名保持不變,但數字鍵名會被重新索引。
輸入數組被當成一個表的列並以行來排序��這類似於 SQL 的 ORDER BY 子句的功能。第一個數組是要排序的主要數組。數組中的行(值)比較為相同的話就按照下一個輸入數組中相應值的大小來排序,依此類推。
從手冊中看到,PHP本身的多維排序,是按照第一個數組進行排序,並且調整後面的順序。像這樣的數組:
array( 'id' => array(1,3,2), 'data'=>array('a','c','b'))
只要按照id進行多維排序,就可以了。但是很多時候,我們構造出的數組是這樣的:
array(
array('id'=>1,'data'=>'a'),
array('id'=>3,'data'=>'c'),
array('id'=>2,'data'=>'b')
);
數組的元素是按行排列的,需要按其中的一列進行排序。PHP好像也沒提供類似矩陣轉置的函數,所以不能直接使用array_multisort進行多維排序。不過只需要先把排序的列抽取出來,作為第一個參數傳給array_multisort即可。function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){<br /> if(is_array($multi_array)){<br /> foreach ($multi_array as $row_array){<br /> if(is_array($row_array)){<br /> $key_array[] = $row_array[$sort_key];<br /> }else{<br /> return -1;<br /> }<br /> }<br /> }else{<br /> return -1;<br /> }<br /> array_multisort($key_array,$sort,$multi_array);<br /> return $multi_array;<br />}
愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具
http://biancheng.dnbcw.info/php/358569.html pageNo:1