2012-05-11 30 views
1

私はPHPのforeachループで奇妙な動作を発見しました。foreachループは空の配列で1回ループする、バグ?

<?php 
$arr = array(); 

foreach ($arr as $a) 
{ 
    echo 'Hello'; 
} 
?> 

私は期待どおりその後、何も配列が空であるという理由だけで印刷されませんが、私はこのようにそれを行う際にされています:

<? $arr = array(); ?> 

<? foreach ($arr as $a): ?> 
    Hello 
<? endforeach; ?> 

次に単語「こんにちは」私はこのようにそれを行うとアレイは空ですが、一度印刷されます。なぜこれが違うのか分かりません。私にはこれはバグのようですが、私は何かが欠けている可能性があります...

私はPHP 5.4(Windows)を使用しています。

あなたが疑問に思っている場合は、私の.phtmlファイル(テンプレートファイル)に2番目の方法を使用しています。

+3

持っていますか? PHPが動いていないので、「Hello」を表示している可能性があります。 –

答えて

4

私はいくつかのテストを行いましたが、これはshort_open_tagがオフであるために起こっているようです。

PHPが実行されていないため、「こんにちは」が表示されています。

php.iniを編集し、short_open_tag1に設定する必要があります。

PHP 5.4より、<?php echoエイリアス<?=は常に利用できますが、短いタグ(<?)構文でもオプションセットが必要です。

ドキュメント:あなたはPHPの短いタグが有効になってhttp://www.php.net/manual/en/ini.core.php#ini.short-open-tag

+0

それは本当に問題でした。 が機能したので、短いタグが有効になったと思った。しかし、彼らはそうではなかったし、今働いている。私はあなたが私にできるようになるとすぐにあなたの答えを受け入れるでしょう。 – w00

+0

@ w00:PHP 5.4では 'short_open_tag'オプションに関係なく' <?= 'が有効になっています。 –

+0

私はshort_open_tagが問題ではないと思います。次の例を試してください: '$ items = ''; foreach((配列)$ itemsを$ itemとして){ \t echo $ item。 'xxx'; } ' $ items変数が空であっても" xxx "を出力します – Phantom007

関連する問題