不带{}的php foreach语法
我正在阅读一篇php到python的文章,这篇文章讨论的是python相当于不带{}的php foreach语法,php,foreach,Php,Foreach,我正在阅读一篇php到python的文章,这篇文章讨论的是python相当于foreach(),他们给出的php代码示例如下 foreach ( $items as $item ) echo $item; 这是没有{}的有效语法吗?我一直认为它是这样写的 foreach ( $items as $item ){ echo $item; } 我在本地通过coderunner运行了第一个示例,以查看它是否会通过一个错误,但它没有,这是一个有效的语法,还是在使用它时会遇到问题?是的
foreach()
,他们给出的php代码示例如下
foreach ( $items as $item )
echo $item;
这是没有{}
的有效语法吗?我一直认为它是这样写的
foreach ( $items as $item ){
echo $item;
}
我在本地通过coderunner运行了第一个示例,以查看它是否会通过一个错误,但它没有,这是一个有效的语法,还是在使用它时会遇到问题?是的,这是有效的。我经常看到这篇文章是这样写的
<?php
foreach($array as $element):
//do something
endforeach;
?>
请参见-将
foreach
和{…}
视为两种不同且独立的语言结构
原始的foreach
语法为
foreach (...)
statement
echo$item代码>是一个有效的语句
{//any code}
也是一条有效语句。假设在foreach
循环中有一条语句是有效的。这实际上超越了foreach
,它适用于for
,while
,if
,等等。此外,它并不特定于PHP,许多语言都支持这种单语句速记。是的,这是一个有效的示例。只有当有一条语句要执行,或者该语句级联到另一条条件/语句中时,它才会工作
因此,虽然下面的示例无效,(也就是说,只有第一个echo将在循环中执行)
这个例子仍然存在
foreach( ... )
if( ... )
echo ...
只有可读性问题。不要使用它,即使在使用if
时也不要使用它。这种语法对代码读者没有任何帮助。我认为如果foreach的内容仅在一行上,它是有效的。同样的情况也发生在if
@Mave上。谢谢,很好的重复发现!谷歌的第一个结果是“foreach无括号”,这是不同的,用于模板制作。在“语句中的一行”的开头和结尾之间支持两行或多行--<代码>回显“foo\n bar”代码>(其中\n
是真正的新行)。或echo 1;回声2代码>---还是一行。这与那里的行数无关。它必须重写,以删除任何提到的行。你完全正确,已修复。
foreach( ... )
if( ... )
echo ...