我有一个数组($vEvents)
,如下所示:
Array
(
[0] => Array
(
[id] => 1174
[date] => 120411
[name] => DR. J 'Souled Out' ~ 9pm (No Cover)
[pubId] => 44
[price] =>
)
[1] => Array
(
[id] => 1108
[date] => 120410
[name] => Verb presents Open Stage ~ 9pm (No Cover)
[pubId] => 44
[price] =>
)
[2] => Array
(
[id] => 1104
[date] => 120409
[name] => DR. J 'Souled Out' ~ 9pm (No Cover)
[pubId] => 44
[price] =>
)
[currLimit] => 10
[eventsRemaining] => 4
我在屏幕上回复:
reset ($vEvents);
foreach ($vEvents as $key => &$value) {
if ($key != 'currLimit' && $key != 'eventsRemaining'){ //Makes sure it doesn't print out the limiter value
$m = substr($value['date'],0,2);
$d = substr($value['date'],2,2);
$y = '20'.substr($value['date'],4,2);
echo date("D", mktime(0, 0, 0, $m, $d, $y)).", ".date("M", mktime(0, 0, 0, $m, $d, $y))." ".$d.", ".$y." - ".$value['name'].'<br />';
}
}
但是在我的输出中,不是获取所有显示的数组条目,而是继续跳过第一个...输出:
Sat, Dec 04, 2010 - Verb presents Open Stage ~ 9pm (No Cover)
Fri, Dec 04, 2009 - DR. J 'Souled Out' ~ 9pm (No Cover)
但是,我的预期输出应为:
Sun, Dec 04, 2011 - DR. J 'Souled Out' ~ 9pm (No Cover)
Sat, Dec 04, 2010 - Verb presents Open Stage ~ 9pm (No Cover)
Fri, Dec 04, 2009 - DR. J 'Souled Out' ~ 9pm (No Cover)
我已尝试更改name
键中的值等,但所有其他整个显示正常,它只是总是跳过第一个键。我之前从未遇到过这个问题。想法?
当我注释掉if ($key != 'currLimit' && $key != 'eventsRemaining'){ //Makes sure it doesn't print out the limiter value
行时,它运行正常。第一个元素的键是零是否相关?但是为什么我的if
检查失败?
答案 0 :(得分:2)
当PHP处理值为0时,PHP很奇怪......在大多数情况下,它将它们视为假。所以,
if ($key != 'currLimit' && $key != 'eventsRemaining')
当$ key == 0时,将评估为false。我会将其更改为:
if ($key !== 'currLimit' && $key !== 'eventsRemaining')
答案 1 :(得分:-3)
因为这是一个数组,我会尝试使用一种不同类型的循环,它可以给你预期的结果:
<?php
$length = count( $vEvents );
for( $i = 0; $i < $length; i ++ )
{
$key = $i;
$value = $vEvents[ $i ];
//rest of the loop code here
}
?>