2011-08-15 55 views
1

我有以下阵列..在阵列返回错误的结果

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

然后我想检查是否wComingEpisodes是数组所以..

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

但是它没有返回即使它在阵列中。由于多个数组或者我的错误在哪里,我是否需要做一些不同的事情?

+0

否; ''wComingEpisodes“'不是数组'$ arrLayout'的值。 –

回答

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

感谢这种有点作品,我想到了一种方法来适应它的工作,所以会做的伎俩:) – Michael

0

在数组中搜索数组值。

字符串“wComingEpisodes”,是价值

关键你可能想使用array_key_exists()

+0

不,它甚至不是输入数组中的关键字。 –

1

你根据documentation得到正确的结果去尝试。

如果你想搜索一个多维数组递归,看看用户贡献的笔记,在那里你可以找到像this这样的例子,显示如何做一个递归搜索(这似乎是你在找什么)。

编辑:
我只注意到你正在试图找出一个特定项是否存在:在这种情况下,你将不得不使用array_key_exists(如in_array,这也没有做递归搜索,所以你必须做一些像this)。

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

+0

问题依然存在:in_array是不是真正的迈克尔想要使用的函数,他正在寻找一个在数组中的键 - 所以真正的解决方案是使用array_key_exists的递归版本;) – oezi

+0

你说得对,我没有注意。 :) – sg3s