没有括号的条件语句在哪里结束?

时间:2012-06-27 17:10:01

标签: php if-statement conditional

假设我在函数中没有括号的条件语句:

function get_user_id() 
{
    if ($something) $this->some_function($str);
    return array('user_id' => $user_id);
}

我认为无括号语句是不好的做法...我想在if语句中添加括号但是语句在哪里结束?它是在第一个分号结束还是在函数结束时结束?

哪个是对的:

function get_user_id() 
{
    if ($something)
    {
       $this->some_function($str);
    }
    return array('user_id' => $user_id);
}

或..

function get_user_id() 
{
   if ($something)
   {
      $this->some_function($str);
      return array('user_id' => $user_id);
   }           
}

3 个答案:

答案 0 :(得分:4)

第一个版本是正确的,因为没有大括号,if语句适用于if语句的条件后只有一个语句。

所以这个:

if ($something) $this->some_function($str);

相当于:

if ($something) {
    $this->some_function($str);
}

我同意the manual对此有点模糊,但其示例是关于单个语句,并提到为了将其他行合并到同一个条件中,您需要一个“语句组” ,用花括号表示:

  

通常你想要执行多个语句   有条件的。相反,您可以将多个语句组合成一个   声明组。

答案 1 :(得分:1)

绝对是第一个版本是正确的。请查看文档中的示例:http://php.net/manual/en/control-structures.if.php

答案 2 :(得分:1)

第一个是正确的。其中一个原因是,如果条件为假,第二个不会返回任何数组,这不是一个好习惯。

 if ($something)
    {
       $this->some_function($str);
    }
 return array('user_id' => $user_id);

为此你需要额外的代码来使它具有容错能力。