溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP的二維數(shù)組怎么進(jìn)行排序

發(fā)布時(shí)間:2021-08-24 10:32:48 來源:億速云 閱讀:272 作者:chen 欄目:編程語言

這篇文章主要介紹“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ù)試試:

    PHP的二維數(shù)組怎么進(jìn)行排序

  • 使用array_multisort($ID, SORT_ASC, $data)根據(jù)二維數(shù)組$data中 “id”那一列字段進(jìn)行升序排序。

因此輸出結(jié)果:

PHP的二維數(shù)組怎么進(jìn)行排序

而如果想要根據(jù)id降序排列,只要將該函數(shù)第二個(gè)參數(shù)設(shè)置為SORT_DESC即可:

array_multisort($ID, SORT_DESC, $data);

輸出結(jié)果:

PHP的二維數(shù)組怎么進(jìn)行排序

如果想要根據(jù)last_name進(jìn)行排序,只要將該函數(shù)第一個(gè)參數(shù)設(shè)置為$LastName數(shù)組即可

array_multisort($LastName, SORT_DESC, $data);

輸出結(jié)果:

PHP的二維數(shù)組怎么進(jìn)行排序

下面我們來了解一下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...)

PHP的二維數(shù)組怎么進(jìn)行排序

方法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é)果:

PHP的二維數(shù)組怎么進(jìn)行排序

想要根據(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é)果:

PHP的二維數(shù)組怎么進(jìn)行排序

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

array_column() 返回輸入數(shù)組中某個(gè)單一列的值。語法格式為:

array_column(array,column_key,index_key);

PHP的二維數(shù)組怎么進(jìn)行排序

返回值:返回一個(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í)用的文章!

向AI問一下細(xì)節(jié)

免責(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)容。

php
AI