首頁  >  文章  >  後端開發  >  PHP數組學習之二維數組怎麼進行排序(2種方法)

PHP數組學習之二維數組怎麼進行排序(2種方法)

青灯夜游
青灯夜游原創
2021-08-23 19:45:598962瀏覽

在之前的文章《PHP 在陣列學習如何截取元素片段(兩種方式)》中,我們介紹了截取陣列、傳回部分陣列元素片段的 兩種方法。這次我們繼續PHP陣列的學習,來聊聊給二維陣列元素進行排序的方法,有興趣的朋友可以學 習了解一下~

→相關推薦:PHP數組學習系列大匯總(持續更新~)

#之前我們了解了一維數組的幾種排序方法,知道PHP內建了不少函數來實現一維數組的降序排序和升序排序。那麼二維數組是否也內建了函數來實現排序呢?

答案是:有的! PHP內建了array_multisort()函數可實現二維數組的排序。下面我們來跟大家介紹兩種利用array_multisort()函數對二維陣列進行排序的方法。

方法1:foreach循環array_multisort()函數

<?php
$data = array(
  array(
    &#39;id&#39; => 5698,
    &#39;first_name&#39; => &#39;Bill&#39;,
    &#39;last_name&#39; => &#39;Gates&#39;,
  ),
  array(
    &#39;id&#39; => 3809,
    &#39;first_name&#39; => &#39;Mark&#39;,
    &#39;last_name&#39; => &#39;Zuckerberg&#39;,
  ),
  array(
    &#39;id&#39; => 4767,
    &#39;first_name&#39; => &#39;Steve&#39;,
    &#39;last_name&#39; => &#39;Aobs&#39;,
  )
);
    // 取得列的列表
    foreach ($data as $key => $row)
    {
        $ID[$key]  = $row[&#39;id&#39;];
        $FirstName[$key] = $row[&#39;first_name&#39;];
				$LastName[$key] = $row[&#39;last_name&#39;];
    }

    array_multisort($ID, SORT_ASC, $data);

var_dump($data);
?>

分析程式碼:

  • 使用foreach循環將相同字段的資料放在一起,使用var_dump($ID)var_dump($FirstName)var_dump($LastName)輸出各個欄位資料試試:

    PHP數組學習之二維數組怎麼進行排序(2種方法)

  • 使用array_multisort($ID, SORT_ASC, $data)根據二維陣列$data中「id」那一列欄位進行升序排序。

因此輸出結果:

PHP數組學習之二維數組怎麼進行排序(2種方法)

而如果想要依照id降序排列,只要將函數第二個參數設為SORT_DESC即可:

array_multisort($ID, SORT_DESC, $data);

輸出結果:

PHP數組學習之二維數組怎麼進行排序(2種方法)

#如果想要根據last_name進行排序,只要將函數第一個參數設定為$LastName陣列即可

array_multisort($LastName, SORT_DESC, $data);

輸出結果:

PHP數組學習之二維數組怎麼進行排序(2種方法)

#下面我們來了解array_multisort()函數:

#array_multisort() 函數傳回排序數組。使用者可以輸入一個或多個數組,該函數會先對第一個數組進行排序,接著是其他數組,如果兩個或多個值相同,它將對下一個數組進行排序。語法如下:

array_multisort(array1,sorting order,sorting type,array2,array3...)

PHP數組學習之二維數組怎麼進行排序(2種方法)

方法2:array_column()函數array_multisort()函數

##在方法1中,我們是利用foreach迴圈來取得相同欄位的數據,這有點複雜。其實,可以使用array_column()函數來實現這項操作。 array_column()函數可以傳回輸入陣列中某個單一列的值。

<?php
$data = array(
  array(
    &#39;id&#39; => 5698,
    &#39;first_name&#39; => &#39;Bill&#39;,
    &#39;last_name&#39; => &#39;Gates&#39;,
  ),
  array(
    &#39;id&#39; => 3809,
    &#39;first_name&#39; => &#39;Mark&#39;,
    &#39;last_name&#39; => &#39;Zuckerberg&#39;,
  ),
  array(
    &#39;id&#39; => 4767,
    &#39;first_name&#39; => &#39;Steve&#39;,
    &#39;last_name&#39; => &#39;Aobs&#39;,
  )
);
//根据字段id对数组$data进行升序排列
$key = array_column($data,&#39;id&#39;);
array_multisort($key,SORT_ASC,$data);

var_dump($data);
?>

輸出結果:

PHP數組學習之二維數組怎麼進行排序(2種方法)

想要根據哪個欄位來排序就將

array_column($data,'id')函數的第二個參數換成那個欄位(鍵值)即可。例如想要根據欄位「first_name」來降序排序,則可:

$key = array_column($data,&#39;first_name&#39;);
array_multisort($key,SORT_DESC,$data);

輸出結果:

PHP數組學習之二維數組怎麼進行排序(2種方法)

」下面我們來了解一下array_column( )函數:

array_column() 傳回輸入陣列中某個單一列的值。語法格式為:

array_column(array,column_key,index_key);

PHP數組學習之二維數組怎麼進行排序(2種方法)

傳回值:傳回數組,數組的值為輸入數組中某個單一列的值。    

好了就說到這裡了,有其他想知道的,可以點這個喔。 → →

php影片教學

最後推薦給大家一個PHP陣列的免費影片教學:

PHP函數之array陣列函數影片講解,快來學習吧!

以上是PHP數組學習之二維數組怎麼進行排序(2種方法)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn