1

PHP の foreach ループで奇妙な動作を発見しました。私がこのようにすると:

<?php
$arr = array();

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

次に、予想どおり、配列が空であるという理由だけで何も出力されませんが、次のようにすると次のようになります。

<? $arr = array(); ?>

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

次に、「Hello」という単語が1回出力されます...配列は空ですが。なぜこれが異なる動作をするのかわかりません。私にはこれはバグのように見えますが、何かが欠けている可能性があります...

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

ご参考までに、私は .phtml ファイル (テンプレート ファイル) で 2 番目の方法を使用しています。

4

1 に答える 1

4

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

PHP が実行されていないため、「Hello」が表示されます。

php.iniを編集してに設定short_open_tagする必要があります1

PHP 5.4 以降、<?php echoエイリアス<?=は常に使用可能ですが、短いタグ ( <?) 構文には依然としてそのオプション セットが必要です。

ドキュメント: http://www.php.net/manual/en/ini.core.php#ini.short-open-tag

于 2012-05-11T21:15:19.307 に答える