虽然在php的脚本中可以在if语句中直接给某个变量赋值,这样代码看起来非常的高大上,显得写代码的人技术非常的牛X。但个人建议,为了代码的健壮性还是少这么办为好,下面就来几个示例说明一下。

php在if语句中赋值的问题

例1:

if($a = 10 && $b = 20){
    echo '我是IF输出的东西!';
}
var_dump($a);
var_dump($b);

输出结果:

我是IF输出的东西!
bool(true) 
int(20)

注:这个示例中虽然判断的结果是对的,但是变量$a的值并不是10,而是一个布尔类型的 TRUE

例2:

if($a = 0 && $b = 20){
    echo '如果我输出了,就代运我运行了!';
}
var_dump($a);
var_dump($b);

输出结果:

bool(false) 

NULL

注:这个示例中$a的值是0也就表示这个IF语句不用再执行下去了,变量$b的赋值会失败。

例3:

if($a=11 || $b=22){
    echo "我是输出!";
}
var_dump($a);
var_dump($b);

输出结果:

我是输出!
bool(true) 
NULL

注:这里的IF判断的组合条件是或,如果$a为真了,就会结束IF判断。

例4:

if($a= 0 || $b=12){
    echo "我是输出!";
}
var_dump($a);
var_dump($b);

输出结果:

我是输出!
bool(true) 
int(12)

例5:

if($a = 11){
    echo 'OK!';
}
var_dump($a); // int(11)
if($a = 0){
    echo 'OK!';
}
var_dump($a); // int(0)
if( $a = ''){
    echo 'OK!';
}
var_dump($a); // string(0) ""
if( $a = 'mochu'){
    echo 'OK!';
}
var_dump($a); // string(5) "mochu"

注:如果IF语句中只有一个判断条件,那么他的赋值是准确的。通俗来说,这里的IF语句是执行了两步,先赋值后判断!