I’ve found weird behaviour in PHPs foreach loop. When I do it like this:
<?php
$arr = array();
foreach ( $arr as $a )
{
echo 'Hello';
}
?>
Then as I expect, nothing is printed simply because the array is empty, but when I do it like this:
<? $arr = array(); ?>
<? foreach ( $arr as $a ): ?>
Hello
<? endforeach; ?>
Then the word ‘Hello’ is printed once… Even though the array is empty. I don’t see why this would behave differently. To me this looks like a bug, but I could be missing something…
I’m using PHP 5.4 (Windows).
And in case you’re wondering, I’m using the second method in my .phtml files (template files).
I did some tests, and it seems this is happening because
short_open_tagis off.You’re seeing “Hello” because the PHP is not being ran.
You need to edit your
php.iniand setshort_open_tagto1.As of PHP 5.4, the
<?php echoalias<?=is always available, but the short tag (<?) syntax still needs that option set.Docs: http://www.php.net/manual/en/ini.core.php#ini.short-open-tag