【发布时间】:2011-12-09 19:49:51
【问题描述】:
特别是08和09给我带来了很大的麻烦。这是一个 PHP 错误吗?
说明: 我在我们客户的几个网站上有一个日历“小部件”,我们有一个 HTML 硬编码日历(我知道 PHP 函数可以生成 n 个月,但老板说“不”)。
在每一天中,都有一个 PHP 函数来检查当天的事件,像这样传递当月的当前日期:
<td valign="top">01<?php printShowLink(01, $events) ?></td>
$events 是该月所有事件的数组,该函数检查当天是否有事件:
function printShowLink($dayOfMonth, $eventsArray) {
$show = array();
$printedEvent = array();
$daysWithEvents = array();
foreach($eventsArray as $event) {
if($dayOfMonth == $event['day'] && !in_array($event['id'], $printedEvent)){
if(in_array($event['day'], $daysWithEvents)) {
echo '<hr class="calendarLine" />';
} else {
echo '<br />';
}
$daysWithEvents[] = $event['day']; // string parsed from timestamp
if($event['linked'] != 1) {
echo '<div class="center cal_event '.$event['class'].'" id="center"><span title="'.$event['title'].'" style="color:#666666;">'.$event['shorttitle'].'</span></div>';
$printedEvent[] = $event['id'];
} else {
echo '<div class="center cal_event '.$event['class'].'" id="center"><a href="event.php?id='.$event['id'].'" title="'.$event['title'].'">'.$event['shorttitle'].'</a></div>';
$printedEvent[] = $event['id'];
}
}
}
}
在 8 日和 9 日,不会出现任何事件。传递当天的字符串而不是填充零的整数会导致同样的问题。
解决方案首先应该是一个非填充整数。但是,我的问题是,您是否看到过 08 和/或 09 的这种奇怪行为?
我用谷歌搜索了这个,找不到任何东西。
【问题讨论】:
-
你能用
intval()函数转换成整数吗? -
@Teddy - 我想我试过了,但我不确定。考虑到 PHP 是松散类型的,我不会得到完全相同的结果吗?当我有机会时,我将不得不进行一些测试。