我创建了两个简单的例子:
第一个例子:
<?php $arr = array(1,2,3,4,5); ?>
<?php foreach ($arr as $element) ?>
<?php { ?>
<?php echo $element; ?>
<?php } ?>
输出:
5 //Is this result wrong?
第二个例子:
<?php $arr = array(1,2,3,4,5); ?>
<?php foreach ($arr as $element) { ?>
<?php echo $element; ?>
<?php } ?>
输出:
12345
我对PHP语法有什么看法?
我知道有一种替代的foreach语法,但在我看来,两个显示的示例都应该产生相同的输出。 (使用PHP版本进行代码测试:5.6.12)
修改
我知道每行都不需要标签。 更确切地说:我想知道为什么这两个例子给我2个不同的结果?
答案 0 :(得分:5)
根据输出,我的猜测是:
<?php $arr = array(1,2,3,4,5); ?>
<?php foreach ($arr as $element) ?>
<?php { ?>
<?php echo $element; ?>
<?php } ?>
被解释为:
<?php
$arr = array(1,2,3,4,5);
foreach ($arr as $element);
{
echo $element;
}
?>
看起来像解释器中的错误?查看Rizier123的评论:
- 不是错误:stackoverflow.com/q/29284075/3933332
- foreach()/ 之后的括号 /;只是一个声明组:php.net/manual/en/control-structures.intro.php
醇>
无论如何,代码看起来很糟糕。请选择更干净的代码。
阅读问题下的评论我认为Jon Stirling最能解释这个症状:
猜猜,但也许是?&gt;在第一个例子中实际上被视为语句结束(循环可以不使用大括号)。此时,循环已经发生,$ element是最后一个值。然后大括号只是作为你回显的代码块,即5。
答案 1 :(得分:0)
您不需要仅使用<?php
和?>
每一行:
<?php
$arr = array(1,2,3,4,5);
foreach ($arr as $element) {
echo $element;
}
?>
或替代语法:
<?php
$arr = array(1,2,3,4,5);
foreach ($arr as $element)
{
echo $element;
}
?>
或者
<?php
$arr = array(1,2,3,4,5);
foreach ($arr as $element):
echo $element;
endforeach;
?>
当你这样做时:
<?php foreach ($arr as $element) ?>
<?php { ?>
<?php echo $element; ?>
<?php } ?>
PHP没有循环,因为它看到了
foreach ($arr as $element)
{
}
echo $element;
答案 2 :(得分:0)
过度使用<? php>
是你的问题。
在输出结果之前,您正在完成foreach
上下文,而在第二个中没有这样做。
仔细查看您的示例,您应该看到您的行为有何不同。
答案 3 :(得分:0)
我不知道你为什么使用这么多的php标签,但这就是为什么它不起作用! 试试这个:
<?php $arr = array(1,2,3,4,5);
foreach ($arr as $element)
{
echo $element;
} ?>