返回错误结果的数组


In array returning the wrong result

我有下面的数组。

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

然后我想检查wComingEpisodes是否在数组中所以…

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

然而,即使它在数组中,它也不返回任何东西。我是否需要做一些不同的事情,因为多个数组或我的错误在哪里?

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'; 

您将根据文档获得正确的结果。

如果你想搜索一个多维数组递归,看看用户贡献的笔记,在那里你可以找到这样的例子,展示了如何进行递归搜索(这似乎是你正在寻找的)。

编辑:


我只是注意到你试图找出一个特定的键是否存在:在这种情况下,你必须使用array_key_exists(像in_array一样,这也不做递归搜索,所以你必须做这样的事情)。

in array查找数组值

字符串"wComingEpisodes"是值

你可以尝试使用array_key_exists()

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