1

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

我正在使用 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...我讨厌在这方面成为菜鸟。

4

1 回答 1

3

函数 mysql_fetch_assoc 返回数组。

如果您制作 print_r($map_set) 那么您将看到这是二维数组。当然 in_array 不起作用。

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

于 2013-01-01T05:54:33.170 回答