PHPでは、次のような条件があります。
if ( is_numeric($my_var) && $my_var == 1 ) {
}
ifの最初の部分がfalseの場合、2番目の部分($my_var == 1
)は実行されますか?
ありがとう!
PHPでは、次のような条件があります。
if ( is_numeric($my_var) && $my_var == 1 ) {
}
ifの最初の部分がfalseの場合、2番目の部分($my_var == 1
)は実行されますか?
ありがとう!
あなたの例では、$my_var == 1
は実行されません(数値でない場合)。PHPは、最初の部分が評価されたと判断します。したがって、 AND演算子false
を使用しているため、2番目の部分を実行してもメリットはありません。&&
例:
if(isset($_GET['something']) && $_GET['something'] == '1')
{
}
クエリ文字列変数something
が欠落している場合、それがに等しいかどうかはチェックされません1
。もしそうなら、それはUndefined index
通知を生成する可能性があります。
次のような方法でこの動作を確認することもできます。
$test = '2';
if($test == '1' && die('dead'))
{
}
echo 'execution continues....';
を設定$test = '2'
すると、die()
実行が停止しません。に設定する1
と、ダイが実行および停止するため、表示されませんExecution continues...
編集:ここにいくつかの一般的な情報があります(PHP固有ではありません)。
最初の条件がfalse
2番目の条件である場合、を使用すると実行されません&&
。あなたはそれを自分で試すことができます:
function a(){
echo 'a';
return true;
}
function b(){
echo 'b';
return true;
}
if (a() && b())
{
//do something
}
これにより、次のように出力されますab
。
function a(){
echo 'a';
return false;
}
function b(){
echo 'b';
return true;
}
if (a() && b())
{
//do something
}
出力a
。
ドキュメントに何も見つからなかったので、この例を示しましたが、このセクションの最初のコメント
これは、必要に応じた評価または遅延評価と呼ばれます。
注:場合によっては、最初の条件の状態に関係なく、2番目の関数を実行すると便利または必要になります。その場合、&
演算子を使用できます。ビット単位の演算子を使用すると、ブール値ではなく数値を操作できます。&
phpインタープリターは、演算子の前後の両方の値を知っている必要があるため、関数( a() & b()
)とtrue
、の両方を実行し、それぞれ、ステートメントのようにfalse
評価されるととして評価されます。1
0
1 & 0 => 0
false
if
あなたはのように使うことができます
if ( is_numeric($my_var)) {
if($my_var == 1)
{
// your code
}
}