0

元の質問に戻りたいと思います:カレンダーに PHP foreach コードを入力する

ローカルホスト サーバーで作業している場合、スクリプトは機能しますが、オンラインにアップロードするとカレンダーが表示されず、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ため、 empty にバインドされていることがあります。私の質問は、 foreach をバイパスして、どちらか一方の空の変数を使用してカレンダーを表示するにはどうすればよいですか?

4

2 に答える 2

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){...}
于 2013-02-21T12:35:28.920 に答える
0

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

これは foreach の前にチェックします。

于 2013-02-21T12:35:56.567 に答える