高手詳談PHP二維數(shù)組
PHP經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,很多用戶(hù)都很了解它了,上網(wǎng)收集了一些關(guān)于PHP二維數(shù)組的相關(guān)知識(shí),這里和大家一起分享一下,PHP本身是有一個(gè)多維數(shù)組排序的函數(shù)的。
- boolarray_multisort(array$ar1[,mixed$arg[,mixed$...[,array$...]]])
下面是手冊(cè)當(dāng)中對(duì)于array_multisort函數(shù)的描述:
#T#array_multisort()可以用來(lái)一次對(duì)多個(gè)數(shù)組進(jìn)行排序,或者根據(jù)某一維或多維對(duì)多維數(shù)組進(jìn)行排序。關(guān)聯(lián)(string)鍵名保持不變,但數(shù)字鍵名會(huì)被重新索引。輸入數(shù)組被當(dāng)成一個(gè)表的列并以行來(lái)排序――這類(lèi)似于SQL的ORDERBY子句的功能。***個(gè)數(shù)組是要排序的主要數(shù)組。數(shù)組中的行(值)比較為相同的話就按照下一個(gè)輸入數(shù)組中相應(yīng)值的大小來(lái)排序,依此類(lèi)推。從手冊(cè)中看到,PHP本身的多維排序,是按照***個(gè)數(shù)組進(jìn)行排序,并且調(diào)整后面的順序。像這樣的數(shù)組:
- array('id'=>array(1,3,2),
- 'data'=>array('a','c','b'))
只要按照id進(jìn)行多維排序,就可以了。但是很多時(shí)候,我們構(gòu)造出的PHP二維數(shù)組是這樣的:
- array(
- array('id'=>1,'data'=>'a'),
- array('id'=>3,'data'=>'c'),
- array('id'=>2,'data'=>'b')
- );
數(shù)組的元素是按行排列的,需要按其中的一列進(jìn)行排序。PHP好像也沒(méi)提供類(lèi)似矩陣轉(zhuǎn)置的函數(shù),所以不能直接使用array_multisort進(jìn)行多維排序。不過(guò)只需要先把排序的列抽取出來(lái),作為***個(gè)參數(shù)傳給array_multisort即可。
- functionmulti_array_sort($multi_array,$sort_key,$sort=SORT_ASC){
- if(is_array($multi_array)){
- foreach($multi_arrayas$row_array){
- if(is_array($row_array)){
- $key_array[]=$row_array[$sort_key];
- }else{
- return-1;
- }
- }
- }else{
- return-1;
- }
- array_multisort($key_array,$sort,$multi_array);
- return$multi_array;
- }
以上就是簡(jiǎn)單的PHP二維數(shù)組的介紹,希望對(duì)大家有幫助。