PHP从入门到精通(第4版)(软件开发视频大讲堂)
上QQ阅读APP看书,第一时间看更新

3.6 PHP运算符

运算符是用来对变量、常量或数据进行计算的符号,它对一个值或一组值执行一个指定的操作。PHP的运算符主要包括算术运算符、字符串运算符、赋值运算符、位运算符、逻辑运算符、比较运算符、递增或递减运算符和条件运算符,这里只介绍一些常用的运算符。

3.6.1 算术运算符

视频讲解:光盘\TM\lx\3\13 算术运算符.mp4

算术运算(Arithmetic Operators)符是处理四则运算的符号,在数字的处理中应用得最多。常用的算术运算符如表3.11所示。

表3.11 常用的算术运算符

说明

在算术运算符中使用%求余,如果被除数($a)是负数,那么取得的结果也是一个负值。

【例3.17】本例分别使用上述几种算术运算符进行运算,实例代码如下:(实例位置:光盘\TM\sl\3\17)

        <?php
            $a=-100;                            //声明变量$a
            $b=50;                              //声明变量$b
            $c=30;                              //声明变量$c
            echo"\$a=".$a.", ";                 //输出变量$a
            echo"\$b=".$b.", ";                 //输出变量$b
            echo"\$c=".$c."<p>";                //输出变量$c
            echo"\$a+\$b=".($a+$b)."<br>";      //计算变量$a加$b的值
            echo"\$a-\$b=".($a-$b)."<br>";      //计算变量$a减$b的值
            echo"\$a*\$b=".($a*$b)."<br>";    //计算$a乘$b的值
            echo"\$a/\$b=".($a/$b)."<br>";      //计算$a除以$b的值
            echo"\$a %\$c=".($a %$c)."<br>";    //计算$a和$b的余数,被除数为-100
        ?>

运行结果如图3.11所示。

图3.11 算术运算符的简单应用

3.6.2 字符串运算符

视频讲解:光盘\TM\lx\3\14 字符串运算符.mp4

字符串运算符只有一个,即英文的句号“.”,它将两个字符串连接起来,结合成一个新的字符串。使用过C或Java语言的读者应注意,这里的“+”只用作赋值运算符,而不能用作字符串运算符。

【例3.18】本例用于对比“.”和“+”两者之间的区别。当使用“.”时,变量$m和$n两个字符串组成一个新的字符串3.1415926r*r1;当使用“+”时,PHP会认为这是一次运算。如果“+”的两边有字符类型,则自动转换为整型;如果是字母,则输出为0;如果是以数字开头的字符串,则会截取字串头部的数字,再进行运算。实例代码如下:(实例位置:光盘\TM\sl\3\18)

        <?php
            $n="3.1415926r*r";         //声明一个字符串变量,以数字开头
            $m=1;                       //声明一个整型变量
            $nm=$n.$m;                  //使用“.”运算符将两个变量连接
            echo $nm."<br>";
            $mn=$n+$m;                  //使用“+”运算符将两个变量连接
            echo $mn . "<br>" ;
        ?>

结果为:3.1415926r*r1

4.1415926

3.6.3 赋值运算符

视频讲解:光盘\TM\lx\3\15 赋值运算符.mp4

赋值运算符是把基本赋值运算符“=”右边的值赋给左边的变量或者常量。在PHP中的赋值运算符如表3.12所示。

表3.12 常用赋值运算符

3.6.4 递增或递减运算符

视频讲解:光盘\TM\lx\3\16 递增或递减运算符.mp4

算术运算符适合在有两个或者两个以上不同操作数的场合使用,但是,当只有一个操作数时,使用算术运算符是没有必要的。这时,就可以使用递增运算符“++”或者递减运算符“--”。

递增或递减运算符有两种使用方法,一种是将运算符放在变量前面,即先将变量作加1或减1的运算后再将值赋给原变量,叫作前置递增或递减运算符;另一种是将运算符放在变量后面,即先返回变量的当前值,然后变量的当前值作加1或减1的运算,叫作后置递增或递减运算符。

【例3.19】定义两个变量,将这两个变量分别利用递增和递减运算符进行操作,并输出结果。实例代码如下:(实例位置:光盘\TM\sl\3\19)

        <?php
            $a = 6;
            $b = 9;
            echo "\$a = $a , \$b = $b<p>";
            echo"\$a++=  ". $a++."<br>";       //先返回$a的当前值,然后$a的当前值加1
            echo "运算后\$a的值: ".$a."<p>" ;
            echo"++\$b=". ++$b."<br>";         //$b的当前值先加1,然后返回新值
            echo "运算后\$b的值: ".$b ;
            echo "<hr><p>";
            echo"\$a--=". $a--."<br>";         //先返回$n的当前值,然后$n的当前值减1
            echo "运算后\$a的值: ".$a."<p>" ;
            echo"\$b=". --$b."<br>";           //$n的当前值先减1,然后返回新值
            echo "运算后\$b的值: ".$b;
        ?>

运行结果如图3.12所示。

图3.12 递增和递减运算符

3.6.5 位运算符

视频讲解:光盘\TM\lx\3\17 位运算符.mp4

位逻辑运算符是指对二进制位从低位到高位对齐后进行运算。在PHP中的位运算符如表3.13所示。

表3.13 位运算符

【例3.20】下面使用位运算符对变量中的值进行位运算操作。实例代码如下:(实例位置:光盘\TM\sl\3\20)

        <?php
          $m = 8 ;
          $n = 12 ;
          $mn=$m&$n;             //位与
          echo $mn ." ";
          $mn=$m|$n;             //位或
          echo $mn ." ";
          $mn=$m^$n;             //位异或
          echo $mn ." ";
          $mn=~$m;              //位取反
          echo $mn ." ";
        ?>

结果为:8 12 4 -9

3.6.6 逻辑运算符

视频讲解:光盘\TM\lx\3\18 逻辑运算符.mp4

逻辑运算符用来组合逻辑运算的结果,是程序设计中一组非常重要的运算符。PHP的逻辑运算符如表3.14所示。

表3.14 PHP的逻辑运算符

在逻辑运算符中,逻辑与和逻辑或这两个运算符有4种运算符号(&&、and、||和or),其中属于同一个逻辑结构的两个运算符号(例如&&和and)之间却有着不同的优先级。

【例3.21】本例分别使用逻辑或中的运算符号||和or进行相同的判断,因为同一逻辑结构的两个运算符||和or的优先级不同,输出的结果也不同。实例代码如下:(实例位置:光盘\TM\sl\3\21)

        <?php
            $i=true;                  //声明一个布尔型变量$i,赋值为真
            $j=true;                  //声明一个布尔型变量$j,赋值也为真
            $z=false;                 //声明一个初值为假的布尔变量$z
            if($i or$j and$z)         //用or进行判断
                echo"true";           //如果if表达式为真,输出true
            else
                echo"false";          //否则输出false
            echo "<br>";
            if($i||$j and$z)          //用||进行判断
                echo"true";           //如果表达式为真,输出true
            else
                echo"false";          //如果表达式为假,输出false
        ?>

结果为:true

false

注意

可以看到,两个if语句除了or和||不同之外,其他完全一样,但最后的结果却正好相反。在实际应用中要多注意一下这样的细节。

3.6.7 比较运算符

视频讲解:光盘\TM\lx\3\19 比较运算符.mp4

比较运算符就是对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回true,如果为假,则返回false。PHP中的比较运算符如表3.15所示。

表3.15 PHP的比较运算符

其中,不太常见的是===和!==。$a === $b,说明$a和$b不只是数值上相等,而且两者的类型也一样。! ==和===的意义相近,$a ! = = $b就是说$a和$b或者数值不等,或者类型不等。

【例3.22】本例使用比较运算符对变量中的值进行比较,设置变量$value="100",变量的类型为字符串型,将变量$value与数字100进行比较,会发现比较的结果非常有趣。其中使用的var_dump()函数是系统函数,作用是输出变量的相关信息。实例代码如下:(实例位置:光盘\TM\sl\3\22)

        <?php
          $value="100";                 //声明一个字符串变量$value
          echo "\$value = \"$value\"";
          echo "<p>\$value==100: ";
          var_dump($value==100);        //结果为:bool(true)
          echo "<p>\$value==ture: ";
          var_dump($value==true);       //结果为:bool(true)
          echo "<p>\$value! =null: ";
          var_dump($value! =null);      //结果为:bool(true)
          echo "<p>\$value==false: ";
          var_dump($value==false);      //结果为:bool(false)
          echo "<p>\$value === 100: ";
          var_dump($value===100);       //结果为:bool(false)
          echo "<p>\$value===true: ";
          var_dump($value===true);      //结果为:bool(true)
          echo "<p>(10/2.0 ! == 5): ";
          var_dump(10/2.0! ==5);        //结果为:bool(true)
        ?>

运行结果如图3.13所示。

图3.13 比较运算符的应用

3.6.8 条件运算符

视频讲解:光盘\TM\lx\3\20 条件运算符.mp4

条件运算符(? :),也称为三目运算符,用于根据一个表达式在另外两个表达式中选择一个,而不是用来在两个语句或者程序中选择。条件运算符最好放在括号里使用。

【例3.23】下面应用条件运算符实现一个简单的判断功能,如果正确则输出“条件运算”,否则输出“没有该值”。实例代码如下:(实例位置:光盘\TM\sl\3\23)

        <?php
          $value=100;                                     //声明一个整型变量
          echo($value==true)? "条件运算": "没有该值";     //对整型变量进行判断
        ?>

结果为:条件运算

3.6.9 运算符的优先级

视频讲解:光盘\TM\lx\3\21 运算符的优先级.mp4

所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算遵循的“先乘除,后加减”是一个道理。

PHP的运算符在运算中遵循的规则是:优先级高的运算先执行,优先级低的操作后执行,同一优先级的操作按照从左到右的顺序执行。也可以像四则运算那样使用小括号,括号内的运算最先执行。表3.16从高到低列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

表3.16 运算符的优先级

这么多的级别,如果想都记住是不太现实的,也没有必要。如果写的表达式真的很复杂,而且包含了较多的运算符,不妨多使用括号,例如:

        <?php
            $a and (($b ! = $c) or (5 * (50- $d)))
        ?>

这样就会减少出现逻辑错误的可能。