骐骥一跃,不能十步;驽马十驾,功在不舍;锲而舍之,朽木不折;锲而不舍,金石可镂。
—— 荀子:《劝学》
学数学,离不开计算与算法。在写代码的实际应用中,我们也是离不开运算和算法。运算离不开运算符,这篇就主要来说说运算符。
1
算术运算符
数学中,加减乘除是算术运算符,同理,PHP中也包含加减乘除取余的算术运算符。
如下,PHP中常用的算术运算符:
名称 | 操作符 | 实例 |
---|---|---|
加法 | + | $x+$y |
减法 | - | $x-$y |
乘法 | * | $x*$y |
除法 | / | $x/$y |
取余数 | % | $x % $y |
实际代码了解一下算术运算:
<?php
$x= 80;
$y= 20;
echo '$x + $y='.($x+$y)."<br>";
echo '$x - $y='.($x-$y)."<br>";
echo '$x * $y='.($x*$y)."<br>";
echo '$x / $y='.($x/$y)."<br>";
echo '$x % $y='.($x%$y)."<br>";
?>
运行结果:
2
逻辑运算符
高中数学学习的真假命题是否成立,学的就是逻辑。在编写代码中,更是离不开对逻辑的运算,以此来编写符合我们流程的代码。
常用的逻辑运算符如下:
操作符 | 实例 | 结果为真 |
---|---|---|
&& 或 and(与) | $x && $y 或 $x and $y | 当$x和$y都为真时才为真 |
|| 或 or (或) | $x || $y | 当$x或者$y有一个为真时就为真 |
Xor(异或) | $x Xor $y | 当$x、$y一真一假时为真 |
!(非) | !$x | $x为假时为真 |
同一个逻辑结构的两个运算符号之间却有着不同的优先级,and与or 的优先级要高于||与 &&。
测试代码了解一下逻辑运算:
<?php
$x=true;
$y=true;
$z=false;
echo '$x or $y and $z is'.($x or $y and $z)."<br>";
echo '$x || $y and $z is'.($x || $y and $z)."<br>";
?>
运行效果:可以看出,and与or 的优先级要高于||与 &&
3
比较运算符
比较运算符在编写代码中,也是经常应用的一种运算符。常用语比较变量的数值大小以及表达式是否成立。
如下PHP中常用的比较运算符
操作符 | 实例 | 结果为真 |
---|---|---|
<(小于) | $x <$y | 当$x小于$y时成立 |
>(大于) | $x> $y | 当$x>$y时成立 |
<=(小于等于) | $x <=$y | 当$x小于等于$y时成立 |
>=(大于等于) | $x>=$y | 当$x大于等于$y时成立 |
== (值相等) | $x==$y | 当$x等于$y时成立 |
!=(值不相等) | $x!=$y | 当$x不等于$y时成立 |
===(恒等) | $x===$y | 当$x恒等于$y时成立 |
!==(不恒等) | $x!==$y | 当$x非恒等于$y时成立 |
最后两项的恒等和不恒等,恒等除了值相等,两者的数据类型也必须相等,不恒等,即使值相等,但是两者数据类型不一样,也是不相等的。
实例代码了解一下:
<?php
$var = 100;
echo '$var===100:';
var_dump($var===100);
echo "<br/>";
echo '$var===true:';
var_dump($var===true);
?>
运行效果:
4
位运算符
位运算,特指的是对数值按二进制数进行位的逻辑运算。
PHP中的位运算符如下:
名称 | 操作符 | 实例 |
---|---|---|
按位与 | & | $x&$y |
按位或 | | | $x|$y |
按位异或 | ^ | $x^$y |
按位取反 | ~ | ~$x |
向左移位 | << | $y << $x |
向右移位 | >> | $y >> $x |
<?php
$m=8;//二进制数是 1000
$n=12;//二进制数是 1100
echo $m & $n; //按位与
echo " ";
echo $m | $n; //按位或
echo " ";
echo $m ^ $n; //按位异或
echo " ";
echo ~$n; //按位取反
echo " ";
echo $m<<2; //左移两位
echo " ";
echo $m>>2; //右移两位
?>
运行结果:
5
字符串运算符
字符串的运算是用于将字符串拼接起来。不同于其他的编程语言,其他的编程语言拼接字符串使用加号(+),PHP拼接字符串的运算符号使用点(.)。
如果使用"+"号的来操作字符类型,则会自动转换为整型,如果是字母,则输出为0,如果是以数字开头的字符串,则会截取字符串头部的数字,再进行运算。非数字类型的参与算术运算,PHP也会给出警告的信息。
下面,实例测试了解一下:
<?php
$x="a123";
$y="abc";
echo $x.$y; //结果为a123abc
echo "<br/>";
echo $x+$y; //0+0结果为0;
echo "<br/>";
$y="123";
echo $x+$y; //0+123结果为123;
?>
运行效果:非数字类型的参与算术运算,PHP给出警告的信息。
6
赋值运算符
赋值,相当与数学中的等于。但在php中等于属于逻辑运算的范畴,像数学的x=1,PHP就应该叫做,把1赋值给变量x,即 $x=1。
但在PHP为了书写代码更加高效,除了"="这个赋值运算符,还有如下常用的几种:
操作 | 符号 | 实例 | 展开形式 | 意义 |
---|---|---|---|---|
赋值 | = | $x=y | $x=5 | 将右边的赋值给左边 |
加 | += | $x+=y | $x=$x+5 | 将右边的值加到左边 |
减 | -= | $x-=y | $x=$x-5 | 将右边的值减到左边 |
乘 | *= | $x*=y | $x=$x*5 | 将右边的值乘以左边的 |
除 | /= | $x/=y | $x=$x/5 | 将右边的值除以左边的 |
连接字符 | .= | $x.=y | $x=$x.5 | 将右边的字符串加到左边 |
取余数 | %= | $x%=y | $x=$x%5 | 将左边的值对右边取余数 |
7
自增,自减运算符
PHP中,还有一种自增1,自减1的运算符。
自增,用'++'运算符表示,相当与 本身加1再赋值给本身,即++$x 等效于 $x = $x +1;
自减,用'--'运算符表示,相当与 本身减1再赋值给本身,即--$x 等效于 $x = $x -1;
实例代码了解一下:自增自减运算符放在变量的前后是有区别,看代码注释的解释:
<?php
$x=5;
//运算符放在变量之后,会先执行代码,后完成自增或自减的操作
echo '$x++的值为:'.$x++."<br>"; //先执行输出,在执行自增,所以$x的值变为5
echo '$x的值为:'.$x."<br>"; //上一个代码执行了自增,所以$x=6
//运算符放在变量之前,会先执行自增或自减操作,后完成执行代码逻辑
echo '++$x的值为:'.++$x."<br>"; //先自增,再执行输出,所以$x的值会变为7
?>
运行结果:
8
其他运算符
三元运算符
所谓三元运算符,就是根据一个表达式的成立与否,去执行两件事。举个例子,如果明天是周末,我就在家看书,不然只能上班了。
用三元运算符,来表达就是,如下: 表达式能成立,执行?之后的事情,不成立,就执行:后的事情。
<?php
$day = '星期六';//假设明天是周末了
echo $day == "星期六" ? "在家看书" : "上班";
?>
运行结果:
@错误屏蔽
使用‘@’可以屏蔽代码中的错误,注意只是屏蔽错误,错误依然在。
例子:
<?php
$x=5;
$y=5;
$x = @($x/0);
echo '--------------------<br/>';
$y = $y/0;
?>
运行效果:使用@没有任何输出
9
表达式
表达式,可以说是一条语句。我们通过编写一条一条的语句来组织我们的代码。一个语句可以是一个变量,一个函数,一个运算符。我们之前写的测试的代码,一行一行以分号(;)结束的语句,都是一个个表达式。
编写PHP代码的时候,每一条语句都该以英文中的分号(;)来结束语句。
通过这一节,我们基本了解了实际编码中广泛应用到的运算符以及使用方式。在以后的开发中,运算符无处不在。所以,熟练的掌握这些运算符,对继续前进的重要基础。