我有一个简单的多维数组,如下所示:
$arr1 = array(3,5,array(4,"foo", array("bar","qux"=>"id")));
然后是递归函数
function getVal($arr){
foreach($arr as $key=>$val){
if($key=="qux"){
echo $val."<br>";
}elseif(is_array($val)){
getVal($val);
}
}
}
最后,第一次调用函数
getVal($arr1);
但是,它输出
3
4
bar
id
而不仅仅是"id"。我哪里错了?
你的一些键是数字,这意味着你在做0 == 'qux'
,在PHP中它的计算结果是true
(qux被转换为整数0,显然0==0是真的)。您需要使用===
,它比较值AND类型。
试试这个:
<?php
$arr1 = array(3,5,array(4,"foo", array("bar","qux"=>"id")));
function getVal($arr){
foreach($arr as $key=>$val){
if($key==="qux"){
echo $val."<br>";
}elseif(is_array($val)){
getVal($val);
}
}
}
getVal($arr1);
?>