AVP*_*mer 1 php string integer
特别是08和09给我带来了一些重大麻烦.这是一个PHP错误吗?
说明:我在客户的几个站点上有一个日历'小部件',我们有一个HTML硬编码的日历(我知道PHP函数可以生成n个月,但老板的人说'不').
在每一天,有一个PHP函数来检查当天的事件,通过当月的当天如下:
<td valign="top">01<?php printShowLink(01, $events) ?></td>
Run Code Online (Sandbox Code Playgroud)
$ 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'];
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在8日和9日,不会出现任何事件.传递一天中的字符串而不是零填充整数会导致同样的问题.
解决方案应该是首先应该是非填充整数.但是,我的问题是,你有没有看到08和/或09这种奇怪的行为?
我用Google搜索了一下,找不到任何东西.
引用它. 0123没有引号是PHP中的八进制. 它在文档中
$ php -r 'echo 01234, "\n01234\n";'
668
01234
$
Run Code Online (Sandbox Code Playgroud)
所以你应该改变你的代码
<td valign="top">01<?php printShowLink('01', $events) ?></td>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1242 次 |
| 最近记录: |