2013-05-01 56 views
0

我有兩個陣列的單個尺寸和multidim陣列,所述多維其逗號in_array單和多維

分離

$singledim =Array 
(
    [0] => 333 
    [1] => 673 
    [2] => 434 
    [3] => 67 

) 

$multidim = Array 
(
    [0] => Array 
     (
      [0] => 22 
      [1] => 3336,673,34,342,432,23,323,434,765675765,7657567 
     ) 

    [1] => Array 
     (
      [0] => 24 
      [1] => 2424,10 
     ) 

    [2] => Array 
     (
      [0] => 28 
      [1] => 23,12,13,14,15,16 
     ) 
............ 
} 

我想使用in_array檢查一維數組值存在.Belwo是一個我試圖..

<? 
foreach($multidim as $multi) 
{ 
    if(in_array($singledim,$multi[1]) 
    { 

    } 
    $i++; 
} 
?> 
+0

現在你正在檢查,看看你整個'$ singledim'數組中匹配一個元素'$多[1]'。這永遠不會匹配。你能否用文字說明你正在嘗試做什麼? – 2013-05-01 19:48:14

+0

請提供預期的輸出(有意義的例子) – 2013-05-01 20:11:21

回答

1
foreach($multidim as $multi){ 
    foreach($singledim as $single){ 
     $temp_array = explode(',',$mutli[1]); 
     if(in_array($single, $temp_array)){ 
      // do stuff 
     } 
    } 
} 

如果傳遞的陣列,即同一陣列組必須在乾草堆中完全以相同的方式存在以匹配。

+0

我得到像這樣的錯誤in_array()期望參數2是數組,在 – 2013-05-01 19:52:55

+0

中給出的字符串由於$ multi [1]是一個字符串,它是一個數組? – 2013-05-01 19:53:43

+0

現在嘗試,沒有注意到它不是一個數組,你將不得不爆炸它 – 2013-05-01 20:06:33

0

你不想要in_array()。你想要strpos(...) !== false。並注意你會受到誤報。例如如果您正在尋找1,那麼您的1221等將會錯誤匹配。您的結構需要進行歸一化處理,[1]子元素中的每個值都應該是其OWN數組元素。

0

$multi[1]不是數組。它是一個逗號分隔的字符串。

您可以使用explode從字符串創建磁盤陣列:

$vals = explode(',' ,$multi[1]); 
if(in_array($singledim, $vals) 
{ 

} 

但是,如果$singledim是一個字符串,它只會工作。

正如在評論中指出,要檢查,如果將整個陣列相同第二陣列中的字符串。你可以第一個數組轉換爲字符串,然後檢查他們是平等的:

$singleDimStr = implode(',' ,$singledim); 
if($singleDimStr == $multi[1]) { 
}