Foreach问题与空变量

时间:2013-02-21 12:33:59

标签: php

我想回顾一下我原来的问题:Populating a calendar with PHP foreach code

在本地主机服务器上工作时,脚本可以正常工作,但是在线上传时,日历不会出现,Chrome会给我以下错误:

<b>Warning</b>:  array_values() [<a href='function.array-values'>function.array-values</a>]: The argument should be an array in <b>/home/flyeurov/public_html/lib/skins/flyeuro/events/events_index.tpl</b> on line <b>30</b>
<b>Warning</b>:  array_merge() [<a href='function.array-merge'>function.array-merge</a>]: Argument #2 is not an array in <b>/home/flyeurov/public_html/lib/skins/flyeuro/events/events_index.tpl</b> on line <b>30</b>
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/flyeurov/public_html/lib/skins/flyeuro/events/events_index.tpl</b> on line <b>30</b><br />

我发现,当我过去没有发生任何事件时会发生这种情况= $history因此为空,或计划将来的事件为$events为空。

foreach(array_merge(array_values($history), array_values($events)) as $event)

但我的系统有时不会计划任何事件,因此空$event,所以我的问题是,如何绕过foreach以显示日历,无论如何使用一个或另一个空变量?

2 个答案:

答案 0 :(得分:2)

if(!empty($history) || !empty($events)){
   foreach(array_merge(array_values($history), array_values($events)) as $event){...}
}

在您的情况下这将是一个更好的解决方案(删除if条件):

$history = (!empty($history))?$history:array();
$events = (!empty($events))?$events:array();
foreach(array_merge(array_values($history), array_values($events)) as $event){...}

答案 1 :(得分:0)

if(!empty($ array)){ ... }

这将在foreach之前检查。