PHP运算符的使用(下)
二元运算符可接受两个值,例如熟悉的算术运算符 +(加)和 -(减),大多数 PHP 运算符都是这种。唯一的三元运算符 ? :,可接受三个值;通常就简单称之为“三元运算符”(条件运算符)
算术运算符
| -$a | 取反 | $a 的负值。 |
| $a + $b | 加法 | $a 和 $b 的和。 |
| $a - $b | 减法 | $a 和 $b 的差。 |
| $a * $b | 乘法 | $a 和 $b 的积。 |
| $a / $b | 除法 | $a 除以 $b 的商。 |
| $a % $b | 取模 | $a 除以 $b 的余数。 |
| $a ** $b | 求幂 | 返回$a 的 $b 次幂.。 PHP 5.6中引进 |
除法运算符总是返回浮点数。只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。
取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。
取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。例如:
|
1
2
3
4
5
6
|
<?phpecho (5 % 3)."\n"; // 输出 2echo (5 % -3)."\n"; // 输出 2echo (-5 % 3)."\n"; // 输出 -2echo (-5 % -3)."\n"; // 输出 -2?> |
赋值运算符
基本的赋值运算符是“=”。把右边表达式的值赋给左边的运算数。
赋值运算表达式的值也就是所赋的值。也就是说,“$a = 3”的值是 3。这样就可以做一些小技巧:
|
1
2
3
|
<?php$a = ($b = 4) + 5; // $a 现在成了 9,而 $b 成了 4。 ?> |
在基本赋值运算符之外,还有适合于所有二元算术,数组集合和字符串运算符的“组合运算符”,这样可以在一个表达式中使用它的值并把表达式的结果赋给它,例如:
|
1
2
3
4
5
6
|
<?php$a = 3;$a += 5; // 设置 $a 为 8, 等同于: $a = $a + 5;$b = "Hello ";$b .= "There!"; // 设置 $b 为 "Hello There!", 等同于 $b = $b . "There!";?> |
注意赋值运算将原变量的值拷贝到新变量中(传值赋值),所以改变其中一个并不影响另一个。这也适合于在密集循环中拷贝一些值例如大数组。
在 PHP 中普通的传值赋值行为有个例外就是碰到对象 object 时,在 PHP 5 中是以引用赋值的,除非明确使用了 clone 关键字来拷贝。
引用赋值
PHP 支持引用赋值,使用“$var = &$othervar;”语法。引用赋值意味着两个变量指向了同一个数据,没有拷贝任何东西。
|
1
2
3
4
5
6
7
8
9
|
<?php$a = 3;$b = &$a; // $b 是 $a 的引用 print "$a\n"; // 输出 3print "$b\n"; // 输出 3$a = 4; // 修改 $a print "$a\n"; // 输出 4print "$b\n"; // 也输出 4,因为 $b 是 $a 的引用,因此也被改变?> |
比较运算符
比较运算符,允许对两个值进行比较。
| $a == $b | 等于 | TRUE,如果类型转换后 $a 等于 $b。 |
| $a === $b | 全等 | TRUE,如果 $a 等于 $b,并且它们的类型也相同。 |
| $a != $b | 不等 | TRUE,如果类型转换后 $a 不等于 $b。 |
| $a <> $b | 不等 | TRUE,如果类型转换后 $a 不等于 $b。 |
| $a !== $b | 不全等 | TRUE,如果 $a 不等于 $b,或者它们的类型不同。 |
| $a < $b | 小与 | TRUE,如果 $a 严格小于 $b。 |
| $a > $b | 大于 | TRUE,如果 $a 严格大于 $b。 |
| $a <= $b | 小于等于 | TRUE,如果 $a 小于或者等于 $b。 |
| $a >= $b | 大于等于 | TRUE,如果 $a 大于或者等于 $b。 |
| $a <=> $b | 结合比较运算符 | 当$a小于、等于、大于than $b时 分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供. |
| $a ?? $b ?? $c | NULL 合并操作符 | 从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供。 |
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。此规则也适用于 switch 语句。
当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
<?phpvar_dump(0 == "a"); // 0 == 0 -> truevar_dump("1" == "01"); // 1 == 1 -> truevar_dump("10" == "1e1"); // 10 == 10 -> truevar_dump(100 == "1e2"); // 100 == 100 -> true switch ("a") {case 0: echo "0"; break;case "a": // 不会执行,因为 "a" 已经匹配 0 echo "a"; break;}?> <?php // Integersecho 1 <=> 1; // 0echo 1 <=> 2; // -1echo 2 <=> 1; // 1 // Floatsecho 1.5 <=> 1.5; // 0echo 1.5 <=> 2.5; // -1echo 2.5 <=> 1.5; // 1 // Stringsecho "a" <=> "a"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1 echo "a" <=> "aa"; // -1echo "zz" <=> "aa"; // 1 // Arraysecho [] <=> []; // 0echo [1, 2, 3] <=> [1, 2, 3]; // 0echo [1, 2, 3] <=> []; // 1echo [1, 2, 3] <=> [1, 2, 1]; // 1echo [1, 2, 3] <=> [1, 2, 4]; // -1 // Objects$a = (object) ["a" => "b"]; $b = (object) ["a" => "b"]; echo $a <=> $b; // 0 $a = (object) ["a" => "b"]; $b = (object) ["a" => "c"]; echo $a <=> $b; // -1 $a = (object) ["a" => "c"]; $b = (object) ["a" => "b"]; echo $a <=> $b; // 1 // only values are compared$a = (object) ["a" => "b"]; $b = (object) ["b" => "b"]; echo $a <=> $b; // 1?> |
| 运算数 1 类型 | 运算数 2 类型 | 结果 |
|---|---|---|
| null 或 string | string | 将 NULL 转换为 "",进行数字或词汇比较 |
| bool 或 null | 任何其它类型 | 转换为 bool,FALSE < TRUE |
| object | object | 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4 中),PHP 5 有其自己的说明 |
| string,resource 或number | string,resource 或number | 将字符串和资源转换成数字,按普通数学比较 |
| array | array | 具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例) |
| object | 任何其它类型 | object 总是更大 |
| array | 任何其它类型 | array 总是更大 |
数组运算符
| $a + $b | 联合 | $a 和 $b 的联合。 |
| $a == $b | 相等 | 如果 $a 和 $b 具有相同的键/值对则为 TRUE。 |
| $a === $b | 全等 | 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。 |
| $a != $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。 |
| $a <> $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。 |
| $a !== $b | 不全等 | 如果 $a 不全等于 $b 则为 TRUE。 |
+ 运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php$a = array("a" => "apple", "b" => "banana");$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");$c = $a + $b; // Union of $a and $becho "Union of \$a and \$b: \n";var_dump($c);$c = $b + $a; // Union of $b and $aecho "Union of \$b and \$a: \n";var_dump($c);$a += $b; // Union of $a += $b is $a and $becho "Union of \$a += \$b: \n";var_dump($a);?> |
字符串运算符
有两个字符串(string)运算符。第一个是连接运算符(“.”),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(“.=”),它将右边参数附加到左边的参数之后。
|
1
2
3
4
5
6
|
<?php$a = "Hello ";$b = $a . "World!"; // $b 为 "Hello World!"$a = "Hello ";$a .= "World!"; // $a 为 "Hello World!"?> |
以上就是PHP运算符的使用(下)的全部内容,欢迎大家学习。


相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型