++运算符 问题集

本文深入解析了PHP中自增运算符的优先级及其对表达式计算的影响,并通过实例说明了在不同运算符组合下数值的变化。同时,探讨了数组清理中foreach与for循环在删除空值与保留整型0的区别,揭示了trim函数在此过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$num = 10;
$res = ++$num + ++$num;
echo $res.'<br>';   //23

$num = 10;
$res = ++$num + $num++;
echo $res.'<br>';   //22

$num = 10;
$res = $num++ + ++$num;
echo $res.'<br>';    //22

$num = 10;
$res = $num++ + $num++;
echo $res.'<br>';    //21

$num = 10;
$res = $num + $num++;
echo $res.'<br>';   //21

$num = 10;
$res = $num + ++$num;
echo $res.'<br>';   //22

$num = 10;
$res = ++$num + $num;
echo $res.'<br>';    //22

$num = 10;
$res = $num++ + $num;
echo $res.'<br>';  //21

 有个问题:

 1 //删除数组中的空值
 2 $arr = ['','a','s',2,'   ','0',0];
 3 print_r($arr);
 4 
 5 foreach($arr as $k=>$v){
 6     if(trim($v) == ''){
 7         unset($arr[$k]);  //foreach加上trim之后就不会把整型的0 删除掉,为什么?而for循环的那个加不加trim都不会删除整型的0.
 8     }
 9 }
10 print_r($arr);
11 
12 $arr = ['','a','s',2,'   ','0',0,0];
13 print_r($arr);
14 $len = count($arr);
15 $n = [];
16 
17 for($i=0;$i<$len-1;$i++){
18     if(trim($arr[$i]) == ''){
19         unset($arr[$i]);  //不会把整型的0删除
20     }
21 }
22 print_r($arr);
23 
24 $arr = ['','a','s',2,'   ','0',0,0];
25 print_r($arr);
26 foreach($arr as $k=>$v){
27     if($v == ''){
28         unset($arr[$k]); //会把整型的0 当做 '' 删除
29     }
30 }
31 print_r($arr);
32 //为什么for循环不会删除整型0,而foreach遍历的会把整型0删除?(在不使用===情况下)foreach加上trim之后就不会删除整型的0 为什么??
33 //也可以使用array_filter();配合回调函数把没有具体值的字符串过滤掉。
View Code

 现在终于弄明白了,今天回顾一下这个问题,有了思路。之前没有考虑运算符优先级的问题。根据手册运算符优先级,可以知道++优先级高于+。所以对于$res = $num + $num++; 会先计算$num++,后边的num会先使用它的值,然后++运算,前边的num值就随着后一个num++而改变。也就是说是11+10;而前后都有++运算符的时候,就是按照从左至右的顺序依次计算。

在举例子把:$num + ++$num;  就是11+11;

如果运算符优先级相同,那运算符的结合方向决定了该如何运算。没有结合的相同优先级的运算符不能连在一起使用,例如 1 < 2 > 1 在PHP是不合法的。

++$a ;a的值先加1,在返回a.  $a++   先返回a的值,在加1.

转载于:https://www.cnblogs.com/bneglect/p/10519439.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值