各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

PHP运算符知识点整理

管理员 2023-09-05
PHP
110

PHP运算符知识点整理

内容导读

收集整理的这篇技术教程文章主要介绍了PHP运算符知识点整理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4086字,纯文字阅读大概需要6分钟

内容图文

一、算术运算符

1. 概览

2. TIPS

除法运算符总是返回浮点数。只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。

取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。

取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。例如:

echo (5 % 3)."n";        // prints 2echo (5 % -3)."n";        // prints 2echo (-5 % 3)."n";        // prints -2echo (-5 % -3)."n";       // prints -2

二、位运算符

1. 概览

2. TIPS

位移在 PHP 中是数学运算。

向任何方向移出去的位都被丢弃。

左移时右侧以零填充,符号位被移走意味着正负号不被保留。

右移时左侧以符号位填充,意味着正负号被保留。

使用位运算符时要特别注意优先级。例如 :

$a & $b == true 先进行比较再进行按位与;

($a & $b) == true 则先进行按位与再进行比较。

三、比较运算符

1. 概览

2. TIPS

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。此规则也适用于 switch 语句。当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。

<?phpvar_dump(0 == "a"); // 0 == 0 -> truevar_dump("1" == "01"); // 1 == 1 -> truevar_dump("10" == "1e1"); // 10 == 10 -> truevar_dump(100 == "1e2"); // 100 == 100 -> trueswitch ("a") {case 0:    echo "0";    break;case "a": // 永远不会到达a,因为 "a" 已经与 0 匹配    echo "a";    break;}?>

3. 对于多种类型,比较运算符根据下表比较(按顺序)

4. 松散比较表

四、递增/递减运算符

1. 概览

2. TIPS

递增/递减运算符不影响布尔值。

递减 NULL 值也没有效果,但是递增 NULL 的结果是 1。

在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。

例如,在 Perl 中 $a = 'Z'; $a++; 将把 $a 变成'AA',而在 C 中,a = 'Z'; a++; 将把 a 变成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)。

注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。

递增/递减其他字符变量则无效,原字符串没有变化。

五、逻辑运算符

1. 概览

2. TIPS

“与”和“或”有两种不同形式运算符的原因是它们运算的优先级不同。

// "&&" 比 "and" 的优先级高// 表达式 (true && false) 的结果被赋给 $g// 等同于:($g = (true && false))$g = true && false;// 常量 true 被赋给 $h,false 被忽略// 等同于:(($h = true) and false)$h = true and false;

六、数组运算符

1. 概览

2. TIPS

数组中的单元如果具有相同的键名和值则比较时相等

$a = array("apple", "banana");$b = array(1 => "banana", "0" => "apple");var_dump($a == $b); // bool(true)var_dump($a === $b); // bool(false)

+ 运算符 和 array_merge() 的区别

当数组下标为字符时,遇到相同键名,+ 运算符会抛弃掉后面的值; array_merge()会用后面的值覆盖前面的值。

当数组下标为数值时, array_merge()会保留所有的值,并重新索引数组。+ 运算符同样会抛弃掉后面具有相同下标的值。

$arr1 = ['color' => 'red', 10, 20];$arr2 = [0, 1, 'color' => 'green'];print_r($arr1 + $arr2);print_r(array_merge($arr1, $arr2));

输出:

Array ( [color] => red [0] => 10 [1] => 20 ) Array ( [color] => green [0] => 10 [1] => 20 [2] => 0 [3] => 1 )

七、运算符优先级

1. 概览

2. TIPS

如果运算符优先级相同,那运算符的结合方向决定了该如何运算。例如,"-"是左联的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且结果是 -4. 另外一方面,"="是右联的,所以 $a = $b = $c 等同于 $a = ($b = $c)。

没有结合的相同优先级的运算符不能连在一起使用,例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表达式 1 <= 1 == 1 是合法的, 因为 == 的优先级低于 <=。

括号的使用,哪怕在不是必要的场合下,通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。

着重记忆:

递增/递减 > ! > 算术运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算符(^) > 位运算符(|) > 逻辑与 > 逻辑或 > 三目 > 赋值 > and > xor > or

3. 实战例题

请写出下列程序输出的结果

$a = 0;$b = 0;if ($a = 3 > 0 || $b = 3 > 0) {    $a++;    $b++;    echo $a. "n";    echo $b. "n";}

例题分析

1.题目中包含 = > || 三种运算符,优先级顺序为 > > || > =

2.$a = 3 > 0 || $b = 3 > 0 等价于 $a = ( ( 3 > 0 ) || $b = ( 3 > 0 ) )

3.( 3 > 0 ) 为 true,因此不会再运算 || 后面的式子

4.$a = true,所以程序可以改写为

$a = 0;$b = 0;if ($a = true) {    $a++;    $b++;    echo $a. "n";    echo $b. "n";}

5.因为 “递增/递减运算符不影响布尔值”,所以 $a++ 后,$a 的值依然是 true,echo true,会输出 1

6.因为 $b = 0 ,所以 $b++ 后,$b 的值为 1

7.输出结果为

11

以上就是PHP运算符知识点整理的详细内容。

内容总结

以上是为您收集整理的PHP运算符知识点整理全部内容,希望文章能够帮你解决PHP运算符知识点整理所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

扫码关注

qrcode

QQ交谈

回顶部