我有一个简单的多维数组,如下所示:
$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
与#34; id&#34;相反。我哪里出错了?
答案 0 :(得分:3)
你的一些键是数字,这意味着你正在进行0 == 'qux'
,这在PHP-land中评估为true
(qux转换为整数0,显然0 == 0是真的)。您需要使用===
,其中比较值 AND 类型。
答案 1 :(得分:0)
试试这个:
<?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);
?>