【问题标题】:PHP in_array() not finding value [duplicate]PHP in_array()找不到值[重复]
【发布时间】:2012-10-05 19:41:06
【问题描述】:

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

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

【问题讨论】:

标签: php arrays


【解决方案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)

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 其实我用了不同的方式。我在查询中使用了 where 子句并检查了 numrows。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-05-02
      • 1970-01-01
      • 2014-07-26
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 2014-05-27
      相关资源
      最近更新 更多