2012-10-15 115 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; 
    } 
}