0

我确定我犯了一个令人尴尬的错误,但我无法发现它。我有以下 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
4

3 回答 3

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'];
}
于 2013-02-06T18:04:50.880 回答
1

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

$result = mysql_fetch_assoc($getdata);

第 14 行中的一个:

while($result = mysql_fetch_assoc($getdata))

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

于 2013-02-06T18:05:40.670 回答
0

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

于 2013-02-06T18:04:15.463 回答