0

我有以下 sql 查询:

$sql = "SELECT lat, lang
        FROM users";

然后我使用以下代码将数组的结果放入两个数组中,一个用于 lat,一个用于 lang。

$i = 0;

foreach($results as $row) {
    $latArray = array();
    $langArray = array();
    $latArray[$i] = $row['lat'];
    $langArray[$i] = $row['lang'];          
    $i = ($i + 1);
}

但是,似乎只存储了传递给数组的最后一个值。当我回显数组的每个值时,我得到以下错误:未定义的偏移量:0 我相信这意味着在 latArray[0] 处没有任何内容。

我确定我在这里遗漏了一些明显的东西,但为什么没有将所有值都复制到新数组中?

4

4 回答 4

3
$i = 0;
$latArray = array(); //Declare once, do not redeclare in the loop
$langArray = array();
foreach($results as $row) {
    $latArray[$i] = $row['lat'];
    $langArray[$i] = $row['lang'];          
    $i = ($i + 1);
}
于 2013-04-07T18:05:10.977 回答
1

在循环之前声明你的数组

$latArray = array();
$langArray = array();

foreach($results as $row) {
    $latArray[$i] = $row['lat'];
    $langArray[$i] = $row['lang'];          
    $i = ($i + 1);
}
于 2013-04-07T18:05:36.337 回答
1

你应该把

$latArray = array();
$langArray = array();

在 foreach 循环之前(就像您使用计数器 $i 一样),因为 $result 中的每个新值都会重置 thous 值..

所以你的代码看起来像:

$i = 0;
$latArray = array();
$langArray = array();
foreach($results as $row) {
    $latArray[$i] = $row['lat'];
    $langArray[$i] = $row['lang'];          
    $i = ($i + 1);
}
于 2013-04-07T18:08:07.963 回答
0

使用 fetch_assoc 代替:

$latArray = array();
        $langArray = array();
    while($row = mysql_fetch_assoc($your_query)){



    $latArray[$i] = $row['lat'];
    $langArray[$i] = $row['lang'];          
    $i++;
}

如果你使用 msqli 我们 mysqli_fetch_assoc

于 2013-04-07T18:08:16.247 回答