我在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文件(模板文件)中使用第二种方法。
答案 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