在之前的文章《PHP 在陣列學習如何截取元素片段(兩種方式)》中,我們介紹了截取陣列、傳回部分陣列元素片段的 兩種方法。這次我們繼續PHP陣列的學習,來聊聊給二維陣列元素進行排序的方法,有興趣的朋友可以學 習了解一下~
→相關推薦:《PHP數組學習系列大匯總(持續更新~)》
#之前我們了解了一維數組的幾種排序方法,知道PHP內建了不少函數來實現一維數組的降序排序和升序排序。那麼二維數組是否也內建了函數來實現排序呢?
答案是:有的! PHP內建了array_multisort()
函數可實現二維數組的排序。下面我們來跟大家介紹兩種利用array_multisort()函數對二維陣列進行排序的方法。
方法1:foreach循環array_multisort()函數
<?php $data = array( array( 'id' => 5698, 'first_name' => 'Bill', 'last_name' => 'Gates', ), array( 'id' => 3809, 'first_name' => 'Mark', 'last_name' => 'Zuckerberg', ), array( 'id' => 4767, 'first_name' => 'Steve', 'last_name' => 'Aobs', ) ); // 取得列的列表 foreach ($data as $key => $row) { $ID[$key] = $row['id']; $FirstName[$key] = $row['first_name']; $LastName[$key] = $row['last_name']; } array_multisort($ID, SORT_ASC, $data); var_dump($data); ?>
分析程式碼:
使用foreach循環將相同字段的資料放在一起,使用var_dump($ID)
、var_dump($FirstName)
、var_dump($LastName)
輸出各個欄位資料試試:
使用array_multisort($ID, SORT_ASC, $data)
根據二維陣列$data中「id
」那一列欄位進行升序排序。
因此輸出結果:
而如果想要依照id降序排列,只要將函數第二個參數設為SORT_DESC
即可:
array_multisort($ID, SORT_DESC, $data);
輸出結果:
#如果想要根據last_name進行排序,只要將函數第一個參數設定為$LastName陣列即可
array_multisort($LastName, SORT_DESC, $data);
輸出結果:
#下面我們來了解array_multisort()函數:
#array_multisort() 函數傳回排序數組。使用者可以輸入一個或多個數組,該函數會先對第一個數組進行排序,接著是其他數組,如果兩個或多個值相同,它將對下一個數組進行排序。語法如下:
array_multisort(array1,sorting order,sorting type,array2,array3...)
方法2:array_column()函數array_multisort()函數
##在方法1中,我們是利用foreach迴圈來取得相同欄位的數據,這有點複雜。其實,可以使用array_column()函數來實現這項操作。 array_column()函數可以傳回輸入陣列中某個單一列的值。<?php $data = array( array( 'id' => 5698, 'first_name' => 'Bill', 'last_name' => 'Gates', ), array( 'id' => 3809, 'first_name' => 'Mark', 'last_name' => 'Zuckerberg', ), array( 'id' => 4767, 'first_name' => 'Steve', 'last_name' => 'Aobs', ) ); //根据字段id对数组$data进行升序排列 $key = array_column($data,'id'); array_multisort($key,SORT_ASC,$data); var_dump($data); ?>
array_column($data,'id')函數的第二個參數換成那個欄位(鍵值)即可。例如想要根據欄位「first_name」來降序排序,則可:
$key = array_column($data,'first_name'); array_multisort($key,SORT_DESC,$data);
array_column(array,column_key,index_key);
PHP函數之array陣列函數影片講解,快來學習吧!
以上是PHP數組學習之二維數組怎麼進行排序(2種方法)的詳細內容。更多資訊請關注PHP中文網其他相關文章!