【问题标题】:Array not containing values when using "in_array" (php) w/ mysql_query使用带有mysql_query的“in_array”(php)时数组不包含值
【发布时间】:2012-12-15 23:58:32
【问题描述】:

我继续与数组斗争!这可能很容易回答。

我正在使用 PHP 从 MYSQL 检索数据集。我得到一个具有第一行的数组(ala mysql_fetch_array)。通常我会遍历这个并获取每个值,但在这种情况下,我已经处于循环中间,我需要找出完整数据集中是否存在特定值(这将超过 1 行)。

我想我可以循环并将所有值放入一个数组中,如下所示:

$query = "SELECT MapId FROM Map Where GameId = $gl_game_id";
$result_set = mysql_query($query, $connection);
confirm_query($result_set);     
$map_set = array();
while($row = mysql_fetch_assoc($result_set)) {
    $map_set[] = $row;
}   

当我 print_r 这个时,我确实得到了完整的数据集(例如,表 Map 中的 MapId 的所有行)。

所以现在,当我去那里查看是否存在一个值(来自另一个循环的)时,它不会找到它。

所以我的代码看起来像:

if (in_array($i, $map_set)) {
    echo "yes, it's there baby!";       
}

但它不起作用。我尝试对数组进行硬编码,这确实有效。所以我构造数组的方式有问题,这个函数不喜欢它。

if (in_array($i, array(40,12,53,65))) {
    echo "yes, it's there baby!";       
}       

arrrg...我讨厌在这方面成为菜鸟。

【问题讨论】:

  • 你的 $map_set 数组的结构是什么,你能把它也贴出来吗..
  • 顺便说一句,mysql 扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,使用 MySQLi 或 PDO_MySQL 扩展
  • @Jeff - 我们必须先查看您的 $map_set 结构来帮助您解决这个问题:P
  • @Sudhir 是的,我知道,我还没有做出改变,但会做到的。谢谢。响应中的解决方案奏效了。

标签: php mysql arrays loops


【解决方案1】:

函数 mysql_fetch_assoc 返回数组。

如果你制作 print_r($map_set) 那么你会看到这是一个二维数组。确定 in_array 不起作用。

只需将$map_set[] = $row; 替换为$map_set[] = $row["MapId"];,然后重试。

【讨论】:

  • 我知道这很简单!非常感谢!
猜你喜欢
  • 2015-01-15
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
相关资源
最近更新 更多