2016-12-22 86 views
0

這是第二次今天這個發生在編碼和我沒有看到我在做什麼它的超級令人沮喪的錯誤PHP認爲陣列是一個整數

在下面$_SESSION['groupData']的代碼是一個多維陣列。

foreach($_SESSION['groupData'] as $i){ 
    echo "<pre>"; 
    print_r($i); 
    echo "<pre>"; 

    if(in_array($_SESSION['uid'], $i)){ 

     echo $i['cn'][0]; 
    } 
} 

而下方則是$i(1個ARRAY每個環路)

Array 
(
    [cn] => Array 
     (
      [count] => 1 
      [0] => SSO Administrators 
     ) 

    [0] => cn 
    [uniquemember] => Array 
     (
      [count] => 10 
      [0] => u1 
      [1] => u2 

     ) 

    [1] => uniquemember 
    [count] => 2 
    [dn] => cn=blah 
) 


Array 
(
    [cn] => Array 
     (
      [count] => 1 
      [0] => group 
     ) 

    [0] => cn 
    [uniquemember] => Array 
     (
      [count] => 10 
      [0] => u1 
      [1] => u2 

     ) 

    [1] => uniquemember 
    [count] => 2 
    [dn] => cn=blank 
) 


Array 
(
    [cn] => Array 
     (
      [count] => 1 
      [0] => bork 
     ) 

    [0] => cn 
    [uniquemember] => Array 
     (
      [count] => 10 
      [0] => u1 
      [1] => u2 

     ) 

    [1] => uniquemember 
    [count] => 2 
    [dn] => cn=blah 
) 

的輸出,但隨後它給我的錯誤

「警告:in_array()預計參數2爲數組,給定整數「

$i是一個數組,不是嗎?爲什麼其他$i會以print_r($i)作爲數組迴響?

任何幫助將不勝感激!

謝謝!

+0

你的任何數字鍵值都不是數組 –

+0

@JohnConde他沒有迭代這些數組,他是迭代的主數組元素。 – Barmar

+1

這真的是整個代碼?我敢打賭你有一些額外的代碼正在重用'$ i'變量。 – Barmar

回答

0

我試圖重新初始化$我通過它循環之前:

$i = array(); 

這沒有奏效。然後我試着玩雜耍:

$j = (array) $i; 

而且確實有效。奇怪的是,PHP這樣行事。