非常に単純な質問ですが、php が IF と AND の使用をどのように処理するのか疑問に思っています。
次のphpコードがあるとします:
if ((pony) && (pony == 2)) {
/* do something */
}
ポニーが 0 に等しい場合、コードは引き続きポニーが 2 に等しいかどうかをチェックしますか、それともそこで停止しますか?
非常に単純な質問ですが、php が IF と AND の使用をどのように処理するのか疑問に思っています。
次のphpコードがあるとします:
if ((pony) && (pony == 2)) {
/* do something */
}
ポニーが 0 に等しい場合、コードは引き続きポニーが 2 に等しいかどうかをチェックしますか、それともそこで停止しますか?
いいえ。ブール演算子は短絡動作を示します。つまり、PHP は式全体の結果を認識するとすぐに評価を停止します。
Logical Operatorsに関する PHP ドキュメントを参照してください。
@Jonathon Reinhartは正しいですが、同時に、使用前に変数を作成する必要がないことを認識する必要があります。
そうは言っても、これは機能します:
if ($pony && $pony == 2) {
/* do something */
}
ただし、PHP で厳密なエラーを使用すると、(あなたの場合) isset()pony
を使用して変数が定義されていることを確認する必要があります。
if (isset($pony) && $pony == 2) {
/* do something */
}
まず、$ を使用して変数を定義します。
$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 */