先拋出問題,有時候我們接收到的引數是多維陣列,我們需要將他們轉成普通的陣列,比如:
$arr = [
[1, 2, [3, 4]],
[5, 6, [7, 8]],
];
我們需要的結果是元素1變成1,2,3,4,元素2變成5,6,7,8,這時候,我們就可以用foreach配合list來實作,而且非常簡單:
foreach ($arr as list($a, $b, list($c, $d))) {
echo $a, ',', $b, ',', $c, ',', $d, PHP_EOL;
}
是不是非常的簡單,但是要注意哦,list拆解鍵值對形式的Hash陣列時要指定鍵名,并且只有在7.1以后的版本才可以使用哦
$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
===============
關注公眾號:【硬核專案經理】獲取最新文章
添加微信/QQ好友:【xiaoyuezigonggong/149844827】免費得PHP、專案管理學習資料
知乎、公眾號、抖音、頭條搜索【硬核專案經理】
B站ID:482780532
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/253820.html
標籤:PHP
上一篇:redis持久化
