2011-08-15 160 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