PHP二維數組(或任意維數組)轉換成一維數組的方法匯總

來源:互聯網
上載者:User

標籤:就是   指定   res   www.   net   轉換   class   ima   array   

目錄

  • 1 array_reduce函數法
  • 2 array_walk_recursive函數法
  • 3 array_map函數法

假設有下面一個二維數組:

$user = array(    ‘0‘ => array(‘id‘ => 100, ‘username‘ => ‘a1‘),    ‘1‘ => array(‘id‘ => 101, ‘username‘ => ‘a2‘),    ‘2‘ => array(‘id‘ => 102, ‘username‘ => ‘a3‘),    ‘3‘ => array(‘id‘ => 103, ‘username‘ => ‘a4‘),    ‘4‘ => array(‘id‘ => 104, ‘username‘ => ‘a5‘),);

現在要轉換成一維數組,有兩種情況:

一種是將指定列轉換成一維數組,這在另一篇文章有總結:PHP提取多維陣列指定一列的方法大全。

現在我們重點講第二種情況,就是把所有的值都轉換成一維數組,而且索引值相同不會被覆蓋,轉換後的一維數組是這樣的:

$result = array(100, ‘a1‘, 101, ‘a2‘, 102, ‘a3‘, 103, ‘a4‘, 104, ‘a5‘);

主要有下面幾個方法。

1 array_reduce函數法

用array_reduce()函數是較為快捷的方法:

$result = array_reduce($user, function ($result, $value) {    return array_merge($result, array_values($value));}, array())

因為array_merge函數會把相同字串鍵名的數組覆蓋合并,所以必須先用array_value取出值後再合并。

如果第二維是數字鍵名,如:

$user = array(    ‘a‘ => array(100, ‘a1‘),    ‘b‘ => array(101, ‘a2‘),    ‘c‘ => array(102, ‘a3‘),    ‘d‘ => array(103, ‘a4‘),    ‘e‘ => array(104, ‘a5‘),);

那麼直接這樣就可以了:

$result = array_reduce($user, ‘array_merge‘, array())
2 array_walk_recursive函數法

用array_walk_recursive()函數就非常靈活,可以把任意維度數群組轉換成一維數組。

$result = [];array_walk_recursive($user, function($value) use (&$result) {    array_push($result, $value);});

例如,下面這個多維陣列:

$user4 = array(    ‘a‘ => array(100, ‘a1‘),    ‘b‘ => array(101, ‘a2‘),    ‘c‘ => array(        ‘d‘ => array(102, ‘a3‘),        ‘e‘ => array(103, ‘a4‘),    ),);

用這個方法後就變成:

$result = array(100, ‘a1‘, 101, ‘a2‘, 102, ‘a3‘, 103, ‘a4‘);
3 array_map函數法

array_maparray_reduce函數的方法類似,如下:

$result = [];array_map(function ($value) use (&$result) {    $result = array_merge($result, array_values($value));}, $user);

只是需要多聲明一個空的$result數組。

 

另外,也可以用array_walk的方法,和foreach迴圈的方法,原理和上面一樣。

PHP二維數組(或任意維數組)轉換成一維數組的方法匯總

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.