字符串运算符
其实只有一个: “.” ,前面也讲过了。
结果:
由上面的运算符衍生出一个新运算符“.=”
结果和上面的是一样的。$a .= $b => $a = $a + $b;
需要注意的地方,“.=”运算符是一个整体,中间不能有空格。
大家可能看到了,楠神在写代码时,在一些运算符、变量之间会有空格,其实空格可以不用加的,这只是楠神的编程习惯,有空格更美观,代码不显得紧凑。
赋值运算符
赋值运算符只有一个“=”
赋值运算符可以这样用:
结果:
由“=”衍生多个赋值运算符 “+=”、“-=”、“*=”、“/=”、“%=”、“.=”,这几个赋值运算符中间都不能有空格。
基本形式为:$变量 赋值运算符 数据2;
这些衍生的赋值运算符,是这种运算的一个简化形式:
$v = $v [算术/字符串运算符] 数据2;//某个变量跟另一个数据进行某种运算之后的结果再存入该变量
对比(它不是这种形式的简化):
$v = 数据2 [算术/字符串运算符] $v; //这种形式不应该简化
$a += $b => $a = $a+$b;
$a -= $b => $a = $a-$b;
$a *= $b => $a = $a*$b;
$a /= $b => $a = $a/$b;
$a %= $b => $a = $a%$b;
三元运算符
三元运算符其实是逻辑运算符和赋值运算符的结合体
三元运算符需要至少3个数据参与!
形式为:数据1 ? 数据2 :数据3
通常,数据1最终应该是一个布尔值(如果不是,则会当作布尔值来使用)。
含义:
如果数据1为true,则运算结果为数据2, 否则运算结果为数据3
典型举例:
$score = 66;
$result 1= $score >= 60 ? “及格” : “不及格”; //结果是“及格”
$result 2= $score ? “及格” : “不及格”; //结果是“及格”,但含义完全不同,因为即使分数是33,也是及格。只有分数为0才是不及格。
结果:
三元运算符可以转换为if else语句来实现:
if( $score >= 60){ $result1 = “及格"; }else{ $result1 = “不及格"; }
拓展:
从php5.3开始
(expr1) ?: (expr3)
在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
$b = $a ?: 1; 等同于 $b = $a ? $a : 1;
从PHP7开始
(expr1) ?? (expr3) 它和 ?: 相似,被称为“NULL 合并运算符”。
$a = $a ?? 1; 等同于 $b = isset($a) ? $a : 1;
两者区别:
$b = $a ?: 1; 当$a未定义时,?: 会报一个 未定义变量的notice错误级别。而且$a必须为true才返回$a。
$b = $a ?? 1; 当$a定义过且值不为null,即返回$a。当$a未定义时,??不会报错,返回1。