当前位置: 首页 > 面试题库 >

PHP-如果/其他,for,foreach,而-没有花括号?

易成天
2023-03-14
问题内容

真正想知道但从未发现的是PHP中的快捷方式。

我目前正在用一个foreach循环在一个函数内编码一个函数。我试图省略花括号,就像您在if / else控制结构中所做的那样,它可以正常工作。没有错误。

foreach($var as $value)
    $arr[] = $value;

现在,我尝试以相同的方式使用它,但在其中放置了一个if / else块。再次,工作,没有错误。

foreach($var as $value)
    if(1 + 1 == 2) {
        $arr[] = $value;
    };

然后,我以为“这为什么起作用?” 省略了分号。还在工作。因此,我尝试在ifeach循环中使用if /
else语句,但不使用花括号,仍然可以正常工作,并且没有错误。但是,foreach循环现在真的关闭/结束了吗?

foreach($var as $value)
    if(1 + 1 == 2)
        $arr[] = $value;

至少我再次省略了分号,并且(如预期的那样)发生了解析错误。

所以我的大问题是:什么时候可以省略花括号,以及在哪个结构/循环/功能中?我知道我绝对可以在ifelse。可是你知道whileforforeach

是的,我知道这是不安全,聪明的,无论使用哪种花括号而不用花括号进行编码,并且都有诸如$condition ? true : false;if: doSomething(); endif;endfor;和的简写形式endforeach;。我不想了解速记,我只是想了解有关何时何地可以省略大括号的条件。


问题答案:

当省略括号时,它将仅将下一个语句视为条件主体。

if ($x) echo 'foo';

是相同的

if ($x) { echo 'foo'; }

但请记住

if ($x)
  echo 'foo';
  echo 'bar';

始终 打印“栏”

在内部,这是另一种方式:if仅查看下一个表达式,但是PHP将所有内容都{}视为单个“分组”表达式。

其他控制语句(foreach,依此类推)相同



 类似资料:
  • 问题内容: 到目前为止,我一直没有通过网络进行搜索,该语句始终具有if和else条件,例如。我想知道三元语句是否可以不使用。假设我有以下代码,如果不为空,我想关闭 (我正在使用Java编程语言。) 问题答案: 不,你不能那样做。 而是尝试以下方法:

  • 我让用户在一个< code>int[]中输入5个int的列表。然后,我用一个简单的< code>for语句遍历int[]中的这些int。我声明了一个名为“evens”的< code>int变量如果int[]中的数字at ,< code > evens ; 现在我有了 语句: 问题是,无论偶数的值是多少,都会调用它。它可以是5或3,但仍会被调用。我最近一直在使用C#,但这是简单的Java。 整机代码

  • 问题内容: 可以正常工作(没有语法错误),但是 抛出Node 4.1.0和babel 这是预期的行为吗?我知道这是一个愚蠢的例子。我只是想知道这是否是错误。 问题答案: 是的,这是预期的行为。语句的生产规则是 但声明不是a,因此不允许在以下位置进行声明:

  • 问题内容: 当左花括号在新行上时,返回,并且警报中显示“ no-it break:undefined”。 当花括号与处于同一行时,将返回一个对象,并警告“奇妙”。 问题答案: 这是JavaScript的陷阱之一:自动分号插入。不以分号结尾但可能是语句结尾的行会自动终止,因此您的第一个示例实际上是这样的: 在第二个示例中,您返回一个对象(由花括号构建),该对象的属性及其值为,实际上与此相同:

  • 问题内容: 我的意思是除了在功能,类需要时(如果同时切换,尝试捕获)时使用它以外。 在看到这样的问题之前,我不知道可以这样做。 在上面的链接中,Eli提到“他们使用它在逻辑部分中折叠他们的代码,这些逻辑部分通常不属于通常会被折叠的函数,类,循环等。” 除上述用途外,还有哪些其他用途? 使用大括号限制变量的范围并仅在需要时才扩展范围是一个好主意吗(在“需要访问”的基础上进行)?还是真的很傻? 如何使