0

在 PHP 中,如果有这样的条件:

if ( is_numeric($my_var) && $my_var == 1 ) {

}

如果 if 的第一部分为假,那么第二部分 ( $my_var == 1) 是否会被执行?

谢谢!

4

3 回答 3

2

在您的示例中,$my_var == 1将不会执行(如果它不是数字)。PHP 将确定第一部分的计算结果false,因此执行第二部分没有任何好处,因为您使用的是&&AND 运算符。

一个例子:

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 的)。

于 2012-11-02T11:53:02.113 回答
1

如果第一个条件是false第二个,如果你使用&&. 你可以自己试试:

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

我给你这个例子是因为我在文档中找不到任何东西,除了本节的第一条评论

这称为按需调用惰性评估

注意:在某些情况下,尽管第一个条件处于状态,但执行第二个函数是有用或必要的。在这种情况下,您可以使用&operator。使用按位运算符,您可以处理数字,而不是布尔值。因为 php 解释器应该知道运算符之前和之后的值,&它将执行两个函数 ( a() & b()) 和true,false分别被评估为101 & 0 => 0这将被评估为false语句if中。

于 2012-11-02T11:55:52.233 回答
0

你可以使用喜欢

if ( is_numeric($my_var)) {

    if($my_var == 1)
        {
            // your code
        }
}
于 2012-11-02T11:51:28.983 回答