PHP in_array()没有找到值

时间:2012-10-15 19:03:31

标签: php arrays

  

可能重复:
  in_array() and multidimensional 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。我这样做了吗?

如果DB中的值是字符串,为什么数组值不会用引号括起来?

3 个答案:

答案 0 :(得分:1)

假设$ skus是上面显示的完整数组,那么'PUBESSENTIALS'将不会出现在$ skus中,因为$ sku包含子数组。

然而,in_array('PUBESSENTIALS',$ skus [1])将返回true。

尝试循环遍历每个$ skus元素,然后检查in_array(value,childArray)的子元素

答案 1 :(得分:1)

您只是查看第一个数组,而不是任何其他数组。您应该仔细查看每个子阵列。这样的事情可以做到这一点:

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

答案 2 :(得分:1)

如果您可以使用MySql执行某些操作,请不要使用PHP! 试试这个解决方案:

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

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