2014-01-30 58 views
1

現在我有以下數組:檢測與is_array嵌套數組()

$test = array(
     'allow' => array(
      'access_level' => array(
      'manager', 
      'admin', 
     ), 
    ), 
    ), 

我就可以做一個foreach循環:

foreach($test['allow'] as $key => $value) { 
    if(is_array($key)){ 
     echo "Its an array within an array!"; 
    } 
} 

但關鍵是從來沒有的數組。我怎麼能弄清楚access_level是一個數組還是隻指向一個值?

+0

你意外地檢查'allow'是否是數組而不是數組。 '允許'是關鍵,數組是'$ value' –

+0

是的,菜鳥的錯誤。謝謝你們的幫助! – Subie

+1

如果你不需要鑰匙,不要fu * king定義它。 – GOD

回答

1

這是因爲key是元素的索引,而不是該元素的值。
應測試is_array()$value(這是在循環中的當前元素)所示:

is_array($value) 

或者,對相匹配的$key,像這樣的數組元素:

is_array($test['allow'][$key]) 
6

is_array($key)更改爲is_array($value)

3

嘗試

if(is_array($value)){ 
     // echo ... 
} 

或者:

if(is_array($test['allow'][$key])){ 
     // echo ... 
} 
0
foreach($test['allow'] as $key => $value) { 
           ^mind the dollar sign here 
    if(is_array($value)){ 
     echo "Its an array within an array!"; 
    } 
} 

您應該檢查對$value,不$key

0

你的關鍵是access_levelaccess_level具有

array(
      'manager', 
      'admin', 
     ), 

檢查的值,如果值是一個數組,而不是重點。

其不可能在PHP爲鍵的陣列是一個數組