0

非常に単純な質問ですが、php が IF と AND の使用をどのように処理するのか疑問に思っています。

次のphpコードがあるとします:

if ((pony) && (pony == 2)) {
  /* do something */
}

ポニーが 0 に等しい場合、コードは引き続きポニーが 2 に等しいかどうかをチェックしますか、それともそこで停止しますか?

4

3 に答える 3

3

いいえ。ブール演算子は短絡動作を示します。つまり、PHP は式全体の結果を認識するとすぐに評価を停止します。

Logical Operatorsに関する PHP ドキュメントを参照してください。

于 2012-11-16T04:17:13.363 に答える
1

@Jonathon Reinhartは正しいですが、同時に、使用前に変数を作成する必要がないことを認識する必要があります。

そうは言っても、これは機能します:

if ($pony && $pony == 2) {
  /* do something */
}

ただし、PHP で厳密なエラーを使用すると、(あなたの場合) isset()ponyを使用して変数が定義されていることを確認する必要があります。

if (isset($pony) && $pony == 2) {
  /* do something */
}
于 2012-11-16T04:24:44.567 に答える
0

まず、$ を使用して変数を定義します。

$pony = 0;

if (($pony) && ($pony == 2)) {
  echo "yeah";
}
/* false */

$pony = 2; の値を変更すると、値は true になります。論理的には、最初の条件では何もテストされませんでした。条件でさえありません。

if($pony){
}

条件を次のように変更すると... $pony が同時に 0 と 2 でなければならない場合は不可能です

if (($pony == 0) && ($pony == 2)) {
  echo "yeah";
}

$pony に値があるかどうかを確認しようとしている場合は、Samuel Cook の回答 isset を参照してください。

if (isset($pony) && $pony == 2) {
  /* do something */
}
/* does $pony has a value/initiated AND its value must be 2 */
于 2012-11-16T04:26:31.817 に答える