1

わかりましたので、PHPは初めてですが、ゆっくりと理解していきます。しかし、1つ質問があります。以下のこれらの例では、両方を異なるマークアップで動作させることができます。{ } を含むものと含まないものがあります。これはなぜですか?誰か説明してくれませんか。

<?php
    $guess = 7;
    $number = 7;

    if ( $guess < $number ){
    echo "Too low!";
    }elseif ($guess > $number){
    echo "Too high!";
    }else {
    echo "You win!";
    }

  ?>

それなし

<?php
    $guess = 7;
    $number = 7;

    if ( $guess < $number )
    echo "Too low!";
    elseif ($guess > $number)
    echo "Too high!";
    else 
    echo "You win!";

  ?>
4

5 に答える 5

3

これは PHP に固有のものではなく、条件付きの略記です。if ステートメントから andを省略する{}、コードの次の行のみが内部にあると見なされます (が表示されるまで;)。

個人的には、次のようにするとより理にかなっています。

<?php
    $guess = 7;
    $number = 7;

    if ($guess < $number) echo "Too low!";
    elseif ($guess > $number) echo "Too high!";
    else echo "You win!";
?>
于 2013-08-24T17:38:12.903 に答える
1

これは、言語が進むにつれてかなり標準的です。基本的に、ステートメントの後に1行ある場合のみ、括弧を省略できます。if複数ある場合は、エラーが発生します。

于 2013-08-24T17:39:27.187 に答える
0

通常、中括弧を使用することをお勧めします (Java、C++、Javascript などの多くの言語で同様の構文が使用されています)。

  • 括弧がないと、セミコロンに到達するまでコードがブロックの一部として実行されます。これは、ブロック内の 1 行のコードのみを実行する場合の省略形として使用できます。ただし、2 行目を追加するとコードが破損し、通常はエラーが発生しないため、デバッグが困難になる可能性があります。例えば:

    $b = "hello";
    if ($foo)
        $a = "hello";
        $b = "goodbye";
    

    この場合、 $b は常に "さようなら" になりますが、これは完全に有効なコードです。

  • ブラケットを使用すると、その中のすべてが実行されます。
于 2013-08-24T17:39:55.360 に答える
0

これは、多くの言語で見られる概念です。ブロックにステートメントが 1 つしかない場合は、中かっこを省略できます。ブロックは 1 つのステートメントであるため、これらのコードは同等です。

for(...)
    if($b)
        $res = true;


for(...) {
    if($b) {
        $res = true;
    }
}
于 2013-08-24T17:40:08.070 に答える
0

これは、 it の後に 1 行のステートメントしか含まれifていないためです。その場合、それらをブレースにグループ化するかどうかは問題ではありません。通訳が問題なく理解してくれるので。

にステートメントが 1 つしかない場合のショートカットifです。

一方、カバーするステートメントが多数ifある場合は、この条件が発生した場合にすべてを実行する必要があることを示すために { } が必要です。

例えば:

while()
if()
statement 1;
else
statement 2;

それらはすべて完全に正常に動作します..

しかし、次のような状態になると;

while()
if()
statement 1;
statement ABC;
Statement DEF;
else
statement 2;

その後、エラーが表示されます!

したがって、エラーを飛ばすために;)

括弧を使用するだけです:

 while() {
if() {
statement 1;
statement ABC;
Statement DEF;
 } else {
statement 2; }

または、if、endifも使用できます

例えば

  while() :
if() :
statement 1;
statement ABC;
Statement DEF;

else :
statement 2;

 endif;
endwhile;
于 2013-08-24T17:41:56.703 に答える