foreach循环循环一次在空数组,bug?

时间:2012-05-11 21:08:32

标签: php foreach

我在PHPs foreach循环中发现了奇怪的行为。当我这样做时:

<?php
$arr = array();

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

然后正如我所料,没有任何内容只是因为数组是空的而被打印出来,但是当我这样做时:

<? $arr = array(); ?>

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

然后打印“Hello”一词......即使数组是空的。我不明白为什么这会有不同的表现。对我来说,这看起来像一个错误,但我可能会遗漏一些东西......

我正在使用PHP 5.4(Windows)。

如果您想知道,我在.phtml文件(模板文件)中使用第二种方法。

1 个答案:

答案 0 :(得分:4)

我做了一些测试,似乎发生了这种情况,因为short_open_tag已关闭。

您看到的是“Hello”,因为PHP没有运行。

您需要修改php.ini并将short_open_tag设置为1

自PHP 5.4起,<?php echo别名<?=始终可用,但短标记(<?)语法仍需要该选项集。

文档:http://www.php.net/manual/en/ini.core.php#ini.short-open-tag