php那些容易出错的题型

1.$a = 10;$b = 20;
$c =  $a++ +  ++$b;

echo $c;

首先$a++,这个表达式会先把$a输出,然后在计算,++$a则正好相反,先计算后输出,所以以上的$c = 10+21=31;

2.

$a=1;$b=1;$c=1;$d=1;$e=1;
if($a=1&&$b=3&&$c=4&&$d=2&&$e=5){
$a++;
$b++;
$c++;
$d++;
$e++;
}
var_dump($a);//true
var_dump($b);//true
var_dump($c);//true
var_dump($d);//true
var_dump($e);//6

见到这种题,很多人第一眼会直接把$a=1看成是$a==1,这两个是不一样的,一个是赋值,一个是判断是否相等

本题为赋值,如果if里面只有一个赋值if($a=1)则直接把1赋值给a,肯定为真,执行a加加,但是如果有多个表达式,一旦出现一个赋值为0,前面的变量都自动转为bool型,因为有个赋值为0,所以前面的变量都变为false,后面不再执行,如果全为真,则全部变为true,本题没有赋值为0,所以a,b,c,d都变为真,但是最后一个e最终赋值给5;

若题变为

$a=1;$b=1;$c=1;$d=1;$e=1;
if($a=1&&$b=0&&$c=0||$d=2&&$e=5){
$a++;
$b++;
$c++;
$d++;
$e++;
}

结果:boolean false
boolean false
int 1
int 1
int 1
例:$a=1;$b=1;$c=1;$d=1;$e=1;
if($a=0||$b=0&&$c=0||$d=2&&$e=5){
$a++;
$b++;
$c++;
$d++;
$e++;
}
var_dump($a);//false
var_dump($b);//false
var_dump($c);//1
var_dump($d);//1
var_dump($e);//1
?>

//$a=0转为为false,因为是 || 连接,还往下走,$b=0,也为假,用&&连接,程序不往下走;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值