• ++运算符 问题集


    $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.

  • 相关阅读:
    5. Redis持久化
    4.Redis客户端
    3.Redis高级功能
    2.Redis五种数据结构
    1.Redis简介
    32.Mysql Cluster
    suffix ACM-ICPC 2017 Asia Qingdao
    多层BFS
    我想和你们说说java和C++___C加加
    11073 最热门的K个搜索串
  • 原文地址:https://www.cnblogs.com/bneglect/p/10519439.html
Copyright © 2020-2023  润新知