Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不带{}的php foreach语法_Php_Foreach - Fatal编程技术网

不带{}的php foreach语法

不带{}的php foreach语法,php,foreach,Php,Foreach,我正在阅读一篇php到python的文章,这篇文章讨论的是python相当于foreach(),他们给出的php代码示例如下 foreach ( $items as $item ) echo $item; 这是没有{}的有效语法吗?我一直认为它是这样写的 foreach ( $items as $item ){ echo $item; } 我在本地通过coderunner运行了第一个示例,以查看它是否会通过一个错误,但它没有,这是一个有效的语法,还是在使用它时会遇到问题?是的

我正在阅读一篇php到python的文章,这篇文章讨论的是python相当于
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 ...