php代码使用while循环时出错?

时间:2013-02-06 18:02:05

标签: php 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

3 个答案:

答案 0 :(得分:3)

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

$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'];
}

答案 1 :(得分:1)

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

$result = mysql_fetch_assoc($getdata);

和第14行中的一个:

while($result = mysql_fetch_assoc($getdata))

第10行中提取的第一条记录已被while循环开头的新提取覆盖。因此,您似乎收到的记录少于预期。

答案 2 :(得分:0)

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