初学者学php运算符有哪些_初学者学php常用运算符【汇总】

12次阅读

php运算符易出错的主因是优先级、隐式类型转换及==与===混用;%仅支持整数、/总返回Float、除零返回INF/NAN;比较首选===;??只判NULL,位运算需注意优先级和平台差异。

初学者学php运算符有哪些_初学者学php常用运算符【汇总】

PHP 运算符本身不难,但初学者常卡在「为什么结果不是我预期的」——问题往往出在优先级、类型隐式转换、或 ===== 混用上。

算术运算符:加减乘除模,注意浮点精度和除零

PHP 的 +-*/% 行为接近其他语言,但有两个实际坑点:

  • % 只支持整数操作数,若传入浮点数(如 10.5 % 3),PHP 会先截断为整数(变成 10 % 3),不报错但易误判
  • / 永远返回 float 类型,哪怕结果是整数(6 / 23.0,不是 3);想取整用 intdiv(6, 2)(int)(6 / 2)
  • 除零不抛异常,而是触发 warning 并返回 INF-INFNAN,需用 is_infinite()isnan() 主动检查

比较运算符:别再无脑用 ===== 才是日常首选

这是初学者最常翻车的地方。PHP 的松散比较 == 会自动类型转换,导致诡异结果:

$a = 0; $b = ''; $c = '0'; var_dump($a == $b); // true(int 0 == string '' → 都转成 0) var_dump($a == $c); // true(int 0 == string '0' → string '0' 转成 int 0) var_dump($a === $c); // false(类型不同,绝不相等)

除非你明确需要类型宽松比较(比如表单提交字符串数字与数据库 int 字段比对且已确认安全),否则一律用 ===!==。另外注意:

立即学习PHP免费学习笔记(深入)”;

  • (宇航员运算符)用于安全排序,返回 -1/0/1,避免 strcmp() 或手动写 if 判断
  • ?? 是空合并运算符,只检测 null 或未定义,不检测空字符串、0false —— 想判断“假值”用 ?:

逻辑与赋值组合:别写 $a = $a + 1,用 +=++,但分清前后置

复合赋值(+=-=.= 等)简洁安全,推荐使用。自增/自减要注意:

  • $i++(后置):先返回当前值,再加 1;++$i(前置):先加 1,再返回新值
  • 用在表达式里差别明显:echo $i++;echo ++$i; 输出不同,循环中多数情况用 $i++ 即可,无需强行前置
  • .= 是字符串拼接专用,比 $s = $s . 'abc' 效率高且可读性好

位运算符:初学者可暂时跳过,但遇到权限系统时绕不开

&|^>> 这些,在普通业务逻辑里极少出现。但一旦接触用户权限(如 RBAC 中用整数位表示多个权限)、文件系统操作(chmod 参数)、或底层数据处理,就必须懂:

  • $flags & FLAG_READ 判断是否含读权限(按位与)
  • $flags |= FLAG_WRITE 增加写权限(按位或赋值)
  • 所有操作数会被转为有符号整数,超大数值可能因平台(32/64 位)表现不同,生产环境建议用 gmp 扩展处理大位运算

真正容易被忽略的是:运算符优先级比你想的更低,& 甚至低于 ==,所以 $a & $b == $c 实际等价于 $a & ($b == $c) —— 必须加括号:($a & $b) == $c

text=ZqhQzanResources