我确信我犯了一个令人尴尬的错误,但我无法发现。我有以下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++;进入循环而不是超出循环:)然而,我不建议使用这种方法——也许你应该解释为什么你需要这样一个数组中的某些键,然后人们可以更好地帮助你。