34

フォーラムを閲覧しているときに、誰かがWebで見つけたPHPファイルについて質問しました。コードには次のようなスポットがいくつかあります。

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

条件が真の場合にやりたいことを囲むには角かっこが必要だといつも思っていました。同じ行にある場合など、他に選択肢はありますか?

このような別の行もあります: if ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",

私の本能は、これは機能しないと言うことですが、それが古いPHPファイルであり、以前は機能していたかどうかもわかりません。

4

7 に答える 7

76

次のようなelseステートメントの場合に実行できます。

<?php
if ($something) {
   echo 'one conditional line of code';
   echo 'another conditional line of code';
}


if ($something) echo 'one conditional line of code';

if ($something)
echo 'one conditional line of code';
echo 'a NON-conditional line of code'; // this line gets executed regardless of the value of $something
?>



次に、if-elseを別の構文で書くこともできます。

<?php
if ($something):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
elseif ($somethingElse):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
else:
   echo 'one conditional line of code';
   echo 'another conditional line of code';
endif;
?>



別の構文を使用すると、次のように解析モードから抜け出すこともできます。

<?php
if ($something):
?>
one conditional line of code<br />
another conditional line of code
<?php
else:
   echo "it's value was: $value<br />\n";
?>
another conditional line of code
<?php
endif;
?>

しかし、これは非常に速く非常に厄介になるので、使用することはお勧めしません(おそらくtemplate-logicを除く)。



そしてそれを完成させるために:

<?php
$result = $something ? 'something was true' : 'something was false';
echo $result;
?>

equals

<?php
if ($something) {
   $result = 'something was true';
} else {
   $result = 'something was false';
}
echo $result;
?>
于 2008-12-19T15:27:08.373 に答える
10

もう少し詳しく説明すると、中括弧がオプションである理由は、構文が次のようになっているためです。

if(CONDITION) BLOCK
[elseif(CONDITION) BLOCK]
[else BLOCK]

BLOCKは単一のステートメントにすることができます。

foo();

または、中括弧で囲まれたステートメントのグループにすることもできます。

{
    foo();
    bar();
}
于 2008-12-19T15:31:50.317 に答える
2

私の意見では

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

は有効ですが、以下よりも読みにくいです。

if ($REMOTE_ADDR == "") {
    $ip = "no ip"; 
} else {
    $ip = getHostByAddr($REMOTE_ADDR);
}
于 2008-12-19T15:32:46.273 に答える
2

ほとんどの C ライクな構文と同様に、中括弧 (大括弧ではない) は PHP ではオプションです。Perl のことを考えているかもしれません。その形式の if 構文では、それらが必要です。

コロンは、PHP がサポートする別の制御構造形式です。私はそれが嫌いですが、一部の人々 (特にテンプレート システムの設計者のようです) が好きです。

于 2008-12-19T15:28:03.817 に答える
1

はい、中括弧を除外することは許可されていますが、その構文を使用しない2つの理由を何度も聞いています。

  1. 読みにくいです。他のプログラマーにはあまりわかりません。
  2. if内に何かを追加したい場合は、最初にコーディングするときに中括弧を追加する必要があります。これは、ほとんどのエディターが中括弧を追加するためです。

また、はい、コロン構文は有効です。代替案はここで見つけることができます:http://php.net/manual/en/control-structures.alternative-syntax.php

于 2008-12-19T15:37:07.513 に答える
-3
brackets are needed to enclose what you want to do if the condition is true

これを必要とする言語は思いつかない

于 2008-12-19T15:35:21.277 に答える