使用while循环的php代码出错


Error with php code using while loop?

我确信我犯了一个令人尴尬的错误,但我无法发现。我有以下php代码,据我所知,这些代码应该可以工作。然而,例如,当我打印$minute[19]时,我在浏览器中收到一条通知,说索引未定义。

顺便提一下,唯一被识别的索引似乎是[0]

$getdata = mysql_query("SELECT * FROM visitors ORDER BY ID DESC LIMIT 20");
$datetime = array();
$time = array();
$parsed = array();
$hour = array();
$minute = array();
$second = array();
$result = mysql_fetch_assoc($getdata);
$i = 0;
while($result = mysql_fetch_assoc($getdata))
{
    $datetime[$i] = $result['datetime'];
    $time[$i]= $datetime[$i];
    $parsed[$i] = date_parse($time[$i]);
    $hour[$i] = $parsed[$i]['hour'];
    $minute[$i] = $parsed[$i]['minute'];
    $second[$i] = $parsed[$i]['second'];
}
$i++;

例如

print_r($minute[19]); // this isn't working

您需要将增量移动到循环中:

$getdata = mysql_query("SELECT * FROM visitors ORDER BY ID DESC LIMIT 20");
$datetime = array();
$time = array();
$parsed = array();
$hour = array();
$minute = array();
$second = array();
$i = 0;
while($result = mysql_fetch_assoc($getdata))
{
    $datetime[$i] = $result['datetime'];
    $time[$i]= $datetime[$i];
    $parsed[$i] = date_parse($time[$i]);
    $hour[$i] = $parsed[$i]['hour'];
    $minute[$i] = $parsed[$i]['minute'];
    $second[$i] = $parsed[$i]['second'];
    $i++;
}

你也可以完全不使用变量。。。类似于:

$getdata = mysql_query("SELECT * FROM visitors ORDER BY ID DESC LIMIT 20");
$hour = array();
$minute = array();
$second = array();
while($result = mysql_fetch_assoc($getdata))
{
    $parsed = date_parse($result['datetime']);
    $hour[] = $parsed['hour'];
    $minute[] = $parsed['minute'];
    $second[] = $parsed['second'];
}

您有两个地方可以获取结果。示例第10行中的一个:

$result = mysql_fetch_assoc($getdata);

第14行中的一个:

while($result = mysql_fetch_assoc($getdata))

第10行中提取的第一条记录被while循环开始时的新提取覆盖。因此,您收到的记录似乎比预期少了一张。

您应该添加$i++;进入循环而不是超出循环:)然而,我不建议使用这种方法——也许你应该解释为什么你需要这样一个数组中的某些键,然后人们可以更好地帮助你。