在数组中返回错误的结果

时间:2011-08-15 19:53:49

标签: php arrays

我有以下数组..

<?php $arrLayout = array(
    "section1" => array(
        "wComingEpisodes" => array(
            "title" => "Coming Episodes",
            "display" => ""
        )
    )); 
?>

然后我想检查wComingEpisodes是否在数组中..

<?php if (in_array( "wComingEpisodes" , $arrLayout )) {
echo "CHECKED";}
?>

然而即使它在数组中也没有返回任何内容。由于多个数组或我的错误在哪里,我是否需要做一些不同的事情?

4 个答案:

答案 0 :(得分:1)

您根据documentation获得了正确的结果。

如果你想要递归搜索一个多维数组,看看用户提供的注释,在那里你可以找到像this这样的例子,它们展示了如何进行递归搜索(这似乎是你的'寻找)。

修改
我刚刚注意到你正试图找出一个特定的密钥是否存在:在这种情况下,你将不得不使用array_key_exists(就像in_array,这也不会进行递归搜索,所以你会有做this)之类的事情。

答案 1 :(得分:1)

in_array测试值,而不是键。它也不测试嵌套值。

$arrLayout = array(
"section1" => array(
    "wComingEpisodes" => array(
        "title" => "Coming Episodes",
        "display" => ""
    )
)); 

echo array_key_exists( 
   "wComingEpisodes",
   // this is the array you're actually looking for
   $arrLayout['section1'] )?'exists':'does not exist'; 

答案 2 :(得分:0)

数组中的

搜索数组值。

字符串“wComingEpisodes”是值的

您可能想尝试使用array_key_exists()

答案 3 :(得分:0)

In_array本质上不是递归的,所以它只会将你给它的值与你给它的数组的第一级数组项进行比较。

谢天谢地,你不是第一个遇到这个问题的人,所以这个功能可以帮到你。取自php.net in_array文档

function in_arrayr($needle, $haystack) { 
        foreach ($haystack as $v) { 
                if ($needle == $v) return true; 
                elseif (is_array($v)) return in_arrayr($needle, $v); 
        } 
        return false; 
} 

http://www.php.net/manual/en/function.in-array.php#60696