かなり多くのif/else
ステートメントの必要性を取り除くことができる単純な質問.
たとえば、次のようなクエリがあるとします。
if ($success1=$db->query('SELECT * FROM `foo`;') || $success2=$db->query('SELECT * FROM `bar`;')) {
...
}
最初のクエリが成功したかどうかのチェックを停止しますか?
かなり多くのif/else
ステートメントの必要性を取り除くことができる単純な質問.
たとえば、次のようなクエリがあるとします。
if ($success1=$db->query('SELECT * FROM `foo`;') || $success2=$db->query('SELECT * FROM `bar`;')) {
...
}
最初のクエリが成功したかどうかのチェックを停止しますか?
あなたが言及しているのは短絡と呼ばれるものです。はい、php は短絡を使用します。AND (&&) 条件の最初のチェックが失敗した場合、2 番目のチェックは行われません。同じことが OR ( || ) にも当てはまります。最初のチェックが成功した場合、2 番目のステートメントは確認されません。
検証については、次の投稿を参照してください: PHP ショート サーキット遅延評価、php.net マニュアルのどこにありますか?
これが非常に役立つ例は、ゼロで除算する場合です。最初のチェックで分母がゼロかどうかを判断し、次に 2 番目のチェックで除算を行います。順序が重要です。分母がゼロの場合、2 番目のチェックがスキップされ、ゼロで除算されることはありません。
if($x != 0 && 10/$x > 3)
最初のものが true の場合、ステートメント内の他のものをチェックする必要がないため、続行します。そうでない場合は、次のようにコーディングします。
if(isset($var) && $var == 1)
定義されていないエラーが発生するため、機能しません。最初のステートメントが false であることがわかるとすぐに、残りのステートメントを停止します。