2012-10-15 282 views
0

可能重複:
in_array() and multidimensional arrayPHP in_array()沒有找到值

得到了下面的陣列從數據庫使用此代碼返回:

$skus = array(); 
$result = mysql_query($sql); 
if($result){ 
    while($rows = mysql_fetch_array($result)){ 
     $skus[]=$rows; 
    } 
} 

結果:

Array (
    [0] => Array { 
      [0] => PUBELI 
      [group_sku] => PUBELI 
     ) 
    [1] => Array (
      [0] => PUBESSENTIALS 
      [group_sku] => PUBESSENTIALS 
     ) 
    [2] => Array (
      [0] => PUBMGRPROGROUPED 
      [group_sku] => PUBMGRPROGROUPED 
     ) 
    [3] => Array (
      [0] => PUB25GROUPED 
      [group_sku] => PUB25GROUPED 
     ) 
) 

我正在尋找使用in_array此值:

if (in_array('PUBESSENTIALS', $skus)) 

,並返回false。我是否正確地做這件事?

如果數據庫中的值是字符串,爲什麼數組值不會被括在引號中?

+0

查找到http://php.net/manual/en/function.array-walk.php – Hast

回答

1

不要使用PHP,如果你可以做一些與MySQL! 嘗試這種解決方案:

$sql = "SELECT * FROM table WHERE str = 'PUBESSENTIALS'"; // some query just add WHERE 

$result = mysql_query($sql); 
if($result) $Row = mysql_fetch_array($result) 
1

假設$ skus是上面顯示的完整數組,那麼'PUBESSENTIALS'將不在$ skus中,因爲$ sku包含子數組。

但是,in_array('PUBESSENTIALS',$ skus [1])將返回true。

試圖通過每個$ SKU的元素循環,然後檢查in_array該子元素(值,childArray)

+0

其實,我做了一個不同的方式。我在查詢中使用了where子句並檢查了數字。 – MB34

1

你只是在尋找到第一個數組,而不是任何其他陣列。你應該通過每個測試每個子數組。像這樣的東西可以做的工作:

foreach($skus as $sku) { 
    if (in_array('PUBESSENTIALS', $sku)) { 
     return true; 
    } 
}