单独使用分组语句是否有效?

时间:2015-01-20 17:09:04

标签: php syntax

我并不认为这是有效的PHP(我确定我曾在几年前尝试过这种方式),但令我惊讶的是它确实运行了(虽然我只在PHP 5.5上测试过。 9):

<?php

$arr = [];

$arr[] = 'Hi.';

{
    $arr[] = '> Hi there.';
    $arr[] = '> What can I do for you?';
}

$arr[] = 'Nothing really.';

print_r($arr);

...输出

Array
(
    [0] => Hi.
    [1] => > Hi there.
    [2] => > What can I do for you?
    [3] => Nothing really.
)

PHP手册在introducing control structures时将{...}称为组声明 - 但是,我无法在此上下文之外找到使用它们的任何提及。它确实说&#34;语句组本身也是一个声明&#34;,但这看起来有点含糊不清。

这真的有效吗?如果我使用这样的大括号,我可以期待我的代码在未来的版本中运行吗?如果一个语句组本身被认为是一个语句,我应该期望它在异常堆栈跟踪中有一个影响行号和帧吗?

1 个答案:

答案 0 :(得分:3)

  

这真的有效吗?

是的,因为至少4.3

  

如果我使用这样的大括号,我可以期待我的代码在将来的版本中运行吗?

直到它从语言中删除,是的。突然发生的变化很少发生。

  

如果一个语句组本身被认为是一个语句,我应该期望它在异常堆栈跟踪中有一个影响行号和帧吗?

框架不包括ifwhilefor等群组声明,所以我希望:不。为什么不尝试一下呢?