在PHP中靈活使用foreach+list處理多維數組

先拋出問題,有時候咱們接收到的參數是多維數組,咱們須要將他們轉成普通的數組,好比:php

$arr = [
    [1, 2, [3, 4]],
    [5, 6, [7, 8]],
];

咱們須要的結果是元素1變成1,2,3,4,元素2變成5,6,7,8,這時候,咱們就能夠用foreach配合list來實現,並且很是簡單:git

foreach ($arr as list($a, $b, list($c, $d))) {
    echo $a, ',', $b, ',', $c, ',', $d, PHP_EOL;
}

是否是很是的簡單。可是要注意哦,list拆解鍵值對形式的Hash數組時要指定鍵名,而且只有在7.1之後的版本纔可使用哦github

$arr = [
    ["a" => 1, "b" => 2],
    ["a" => 3, "b" => 4],
];

foreach ($arr as list("a" => $a, "b" => $b)) {
    echo $a, ',', $b, PHP_EOL;
}

foreach ($arr as ["a" => $a, "b" => $b]) {
    echo $a, ',', $b, PHP_EOL;
}

注意:若是沒有寫鍵名,會輸出空而不會報錯,這是個BUG點,千萬要注意。數組

上述代碼中第二個寫法更簡單直觀,由此發現咱們還能夠這樣來拆解數組。而且指定鍵值了就不用在意他們的順序了:微信

["b" => $b, "a" => $a] = $arr[0];
echo $a, ',', $b, PHP_EOL;

原來list()還有這樣的語法糖,果真仍是要不斷的學習,一直使用卻從未深刻了解過的方法居然能有這麼多的用處。很少說了,接着研究手冊中其餘好玩的東西去咯!學習

測試代碼:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/%E5%9C%A8PHP%E4%B8%AD%E7%81%B5%E6%B4%BB%E4%BD%BF%E7%94%A8foreach%2Blist%E5%A4%84%E7%90%86%E5%A4%9A%E7%BB%B4%E6%95%B0%E7%BB%84.php測試

===============code

關注公衆號:【硬核項目經理】獲取最新文章blog

添加微信/QQ好友:【xiaoyuezigonggong/149844827】免費得PHP、項目管理學習資料項目管理

知乎、公衆號、抖音、頭條搜索【硬核項目經理】

B站ID:482780532

相關文章
相關標籤/搜索