1

関数に角かっこなしの条件文があるとします。

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);
   }           
}
4

3 に答える 3

4

最初のバージョンは正しいです。中括弧がない場合、ステートメントの後の1つifのステートメントのみがステートメントの条件に適用されますif

したがって、この:

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

と同等です:

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

マニュアルがこれについて少し曖昧であることに同意しますが、その例は単一のステートメントに関するものであり、同じ条件に追加の行を組み込むには、中括弧で示される「ステートメントグループ」が必要であると述べています。

多くの場合、条件付きで複数のステートメントを実行する必要があります。代わりに、複数のステートメントをステートメントグループにグループ化できます。

于 2012-06-27T17:11:08.687 に答える
1

間違いなく最初のバージョンが正しいです。ドキュメントの例を見てみましょう: http://php.net/manual/en/control-structures.if.php

于 2012-06-27T17:13:57.400 に答える
1

最初の 1 つが正しいです。理由の 1 つは、条件が false の場合、2 番目が配列を返さないためです。これはお勧めできません。

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

そのためには、フォールトトレラントにするための追加のコードが必要です。

于 2012-06-27T17:19:00.647 に答える