先拋出問(wèn)題,有時(shí)候我們接收到的參數(shù)是多維數(shù)組,我們需要將他們轉(zhuǎn)成普通的數(shù)組,比如:
$arr = [
[1, 2, [3, 4]],
[5, 6, [7, 8]],
];
我們需要的結(jié)果是元素1變成1,2,3,4,元素2變成5,6,7,8,這時(shí)候,我們就可以用foreach配合list來(lái)實(shí)現(xiàn),而且非常簡(jiǎn)單:
foreach ($arr as list($a, $b, list($c, $d))) {
echo $a, ',', $b, ',', $c, ',', $d, PHP_EOL;
}
是不是非常的簡(jiǎn)單。但是要注意哦,list拆解鍵值對(duì)形式的Hash數(shù)組時(shí)要指定鍵名,并且只有在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;
}
注意:如果沒(méi)有寫(xiě)鍵名,會(huì)輸出空而不會(huì)報(bào)錯(cuò),這是個(gè)BUG點(diǎn),千萬(wàn)要注意。
上述代碼中第二個(gè)寫(xiě)法更簡(jiǎn)單直觀,由此發(fā)現(xiàn)我們還可以這樣來(lái)拆解數(shù)組。并且指定鍵值了就不用在乎他們的順序了:
["b" => $b, "a" => $a] = $arr[0];
echo $a, ',', $b, PHP_EOL;
原來(lái)list()還有這樣的語(yǔ)法糖,果然還是要不斷的學(xué)習(xí),一直使用卻從未深入了解過(guò)的方法竟然能有這么多的用處。不多說(shuō)了,接著研究手冊(cè)中其他好玩的東西去咯!
測(cè)試代碼: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
到此這篇關(guān)于在PHP中靈活使用foreach+list處理多維數(shù)組的文章就介紹到這了,更多相關(guān)PHP使用foreach+list處理多維數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- PHP關(guān)于foreach復(fù)制知識(shí)點(diǎn)總結(jié)
- vue.js 雙層嵌套for遍歷的方法詳解, 類(lèi)似php foreach()
- PHP運(yùn)用foreach神奇的轉(zhuǎn)換數(shù)組(實(shí)例講解)
- PHP在彈框中獲取foreach中遍歷的id值并傳遞給地址欄
- php優(yōu)化查詢(xún)foreach代碼實(shí)例講解