0

可能重复:
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。我这样做正确吗?

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

4

3 回答 3

1

Don't use PHP if you may do something with MySql! Try this solution:

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

$result = mysql_query($sql);
if($result) $Row = mysql_fetch_array($result)
于 2012-10-15T19:35:13.357 回答
1

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

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

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

于 2012-10-15T19:07:12.440 回答
1

您只查看第一个数组,而不查看任何其他数组。您应该查看每个以测试每个子阵列。像这样的东西可以完成这项工作:

foreach($skus as $sku) {
    if (in_array('PUBESSENTIALS', $sku)) {
        return true;
    }
}
于 2012-10-15T19:12:33.513 回答