Reputation: 26782
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).
Upvotes: 1
Views: 615
Reputation: 227280
I did some tests, and it seems this is happening because short_open_tag
is off.
You're seeing "Hello" because the PHP is not being ran.
You need to edit your php.ini
and set short_open_tag
to 1
.
As of PHP 5.4, the <?php echo
alias <?=
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
Upvotes: 4