您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP的二維數(shù)組怎么進(jìn)行排序”,在日常操作中,相信很多人在PHP的二維數(shù)組怎么進(jìn)行排序問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”PHP的二維數(shù)組怎么進(jìn)行排序”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
之前我們了解了一維數(shù)組的幾種排序方法,知道PHP內(nèi)置了不少函數(shù)來實(shí)現(xiàn)一維數(shù)組的降序排序和升序排序。那么二維數(shù)組是否也內(nèi)置了函數(shù)來實(shí)現(xiàn)排序呢?
答案是:有的!PHP內(nèi)置了array_multisort()
函數(shù)可實(shí)現(xiàn)二維數(shù)組的排序。下面我們給大家介紹兩種利用array_multisort()函數(shù)對(duì)二維數(shù)組進(jìn)行排序的方法。
方法1:foreach循環(huán) + array_multisort()函數(shù)
<?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循環(huán)將同一字段的數(shù)據(jù)放在一起,使用var_dump($ID)
、var_dump($FirstName)
、var_dump($LastName)
輸出各個(gè)字段數(shù)據(jù)試試:
使用array_multisort($ID, SORT_ASC, $data)
根據(jù)二維數(shù)組$data中 “id
”那一列字段進(jìn)行升序排序。
因此輸出結(jié)果:
而如果想要根據(jù)id降序排列,只要將該函數(shù)第二個(gè)參數(shù)設(shè)置為SORT_DESC
即可:
array_multisort($ID, SORT_DESC, $data);
輸出結(jié)果:
如果想要根據(jù)last_name進(jìn)行排序,只要將該函數(shù)第一個(gè)參數(shù)設(shè)置為$LastName數(shù)組即可
array_multisort($LastName, SORT_DESC, $data);
輸出結(jié)果:
下面我們來了解一下array_multisort()函數(shù):
array_multisort() 函數(shù)返回一個(gè)排序數(shù)組。用戶可以輸入一個(gè)或多個(gè)數(shù)組,該函數(shù)會(huì)先對(duì)第一個(gè)數(shù)組進(jìn)行排序,接著是其他數(shù)組,如果兩個(gè)或多個(gè)值相同,它將對(duì)下一個(gè)數(shù)組進(jìn)行排序。語法如下:
array_multisort(array1,sorting order,sorting type,array2,array3...)
方法2:array_column()函數(shù)+array_multisort()函數(shù)
在方法1中,我們是利用foreach循環(huán)來獲取同一字段的數(shù)據(jù),這有點(diǎn)復(fù)雜。其實(shí),可以使用array_column()函數(shù)來實(shí)現(xiàn)這一操作。array_column()函數(shù)可以返回輸入數(shù)組中某個(gè)單一列的值。
<?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', ) ); //根據(jù)字段id對(duì)數(shù)組$data進(jìn)行升序排列 $key = array_column($data,'id'); array_multisort($key,SORT_ASC,$data); var_dump($data); ?>
輸出結(jié)果:
想要根據(jù)哪個(gè)字段來排序就將array_column($data,'id')
函數(shù)的第二個(gè)參數(shù)換成那個(gè)字段(鍵值)即可。例如想要根據(jù)字段“first_name”來降序排序,則可:
$key = array_column($data,'first_name'); array_multisort($key,SORT_DESC,$data);
輸出結(jié)果:
下面我們來了解一下array_column()函數(shù):
array_column() 返回輸入數(shù)組中某個(gè)單一列的值。語法格式為:
array_column(array,column_key,index_key);
返回值:返回一個(gè)數(shù)組,數(shù)組的值為輸入數(shù)組中某個(gè)單一列的值。
到此,關(guān)于“PHP的二維數(shù)組怎么進(jìn)行排序”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。