在php数组中进行简单的键搜索

时间:2015-11-25 19:21:17

标签: php arrays recursion

我有一个简单的多维数组,如下所示:

$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;相反。我哪里出错了?

2 个答案:

答案 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);
?>