Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:案例有点少了, 还是要多做练习
基本的加、减、乘、除、取模、求幂。
$a = 7;
$b = 3;
--------------------
echo $a + $b; // 7 + 3 = 10
echo $a - $b; // 7 - 3 = 4
echo $a * $b; // 7 * 3 = 21
echo $a / $b; // 7 / 3 = 2.3333333333333
echo $a % $b; // 7 / 3 = 2 余 1
echo $a ** $b; // 7 的 3 次方 = 343(自 php5.6 )
根据符号位置不同,选择先加减还是先返回值。符号在前先加减再返回值,反之亦然。
$x++, ++$x, $x--, --$x
$x = 5;
echo $x++; // 5
echo $x; // 6
echo ++$x; // 7 上一步 $x = 6,这里先赋值再返回,所以是 7
echo $x; // 7
老师讲了一个 “ . ” 连接运算符,返回左右参数连接后的字符串。
官方手册中把 “ .= ” 称为连接赋值运算符,功能是将右边参数附加到左边参数之后。
$x = 1;
$y = 2;
var_dump($x . $y); // string(2) "12"
$z = 1;
$z .= 23;
var_dump($z); // string(3) "123"
共有 7 中,自己测试的例子如下:
$a = 10; // 将 a 的值设置为 10
echo ($a += 2) . '<br>'; // 10 + 2 = 12
echo ($a -= 2) . '<br>'; // 12 - 2 = 10
echo ($a *= 2) . '<br>'; // 10 * 2 = 20
echo ($a /= 2) . '<br>'; // 20 / 2 = 10
echo ($a %= 2) . '<br>'; // 10 % 2 = 5 余数为 0
讲了 9 种,两边 比较后会返回布尔值 ,常用于流程控制(if/while/for…),代码示例如下:
$a > $b // a 大于 b
$a >= $b // a 大于或等于 b
$a < $b // a 小于 b
$a <= $b // a 小于或等于 b
$a == $b // a 等于 b,值相等即可,会自动转换。不要和 = 赋值运算符搞混了
$a === $b // 全等,值与类型都相等,老师说推荐使用。
$a != $b // a 不等于 b
$a !== $b // a 不全等于 b
$a <=> // 太空船(结合比较运算符),php7+
关于 太空船 运算符,专门测试了下:太空船比较运算符小知识
讲了 4 种逻辑运算符,&&
与,||
或,!
非,xor
逻辑异或
$a && $b; // 如果 $a 和 $b 都为 true
$a || $b; // 如果 $a 或 $b 任一为 true
!$a; // 如果 $a 不为 true
$a xor $b; // 如果 $a 或 $b 任一为 true,但不同时是。
三元运算符 | |
---|---|
格式 | 条件 ? 结果1 : 结果2 |
作用 | 用来简化双分支语句 |
$a = '10';
echo is_numeric($a) ? '是数字' : '不是数字'; // 是数字
以上代码等同于:
if (is_numeric($a)) {
echo '是数字';
} else {
echo '不是数字';
}
is_numeric()
函数的作用:检测变量是否为数字或数字字符串,是则返回 TRUE,否则返回 FALSE。
null 合并运算符 | |
---|---|
格式 | $a = $a ?? $b |
作用 | 简化代码? |
$user = 'jack';
$user = $user ?? 'guest';
echo $user; // jack
以上代码等同于:
echo $user == 'jack' ? 'jack' : 'guest';
将 @ 符号放在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略。
@ 运算符只对表达式有效。一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数和
include
调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如if
和foreach
等。