详见PHP手册
算数运算符
除法运算符总是返回浮点数
取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。
取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和$a 的符号相同。例如:
<span style="font-size:14px;"><?php echo (5 % 3)."\n"; // prints 2 echo (5 % -3)."\n"; // prints 2 echo (-5 % 3)."\n"; // prints -2 echo (-5 % -3)."\n"; // prints -2 ?></span>
当对一个大数取模时(即超过PHP_INT_MAX)会出现错误:
<span style="font-size:14px;"><span style="font-size:14px;"><?php var_dump(5555555555555%5);//结果是int -4,而正确结果应该是int 0; ?></span></span>
解决方案:
用fmod()代替%, fmod — 返回除法的浮点数余数
<span style="font-size:14px;"><span style="font-size:14px;"><?php var_dump(fmod(5555555555555,5));//结果是float 0; ?></span></span>
这是因为PHP的float其实是double,甚至在32位系统,可以准确地代表整数52字节,
-=
*=
/=
%=
.=
<span style="font-size:14px;"><span style="font-size:14px;"><?php $a = 3; $b = &$a; // $b 是 $a 的引用 print "$a\n"; // 输出 3 print "$b\n"; // 输出 3 $a = 4; // 修改 $a print "$a\n"; // 输出 4 print "$b\n"; // 也输出 4,因为 $b 是 $a 的引用,因此也被改变 ?></span></span>
注意:自 PHP 5 起,new运算符自动返回一个引用,因此再对new 的结果进行引用赋值在 PHP 5.3 以及以后版本中会发出一条 E_DEPRECATED
错误信息,在之前版本会发出一条E_STRICT
错误信息。
<span style="font-size:14px;"><?php class C {} /* The following line generates the following error message: * Deprecated: Assigning the return value of new by reference is deprecated in... */ $o = &new C; ?></span>
NULL
值也没有效果,但是递增NULL
的结果是 1。 <?php $a = "Hello "; $b = $a . "World!"; // now $b contains "Hello World!" $a = "Hello "; $a .= "World!"; // now $a contains "Hello World!" ?>
a) 对类使用 instanceof
b) 对继承类使用instanceof
c) 使用 instanceof 检查对象不是某个类的实例
d) 对接口使用 instanceof
e) 对其它变量使用instanceof
f) 用 instanceof 检测其它变量
g) 避免 PHP 5.0 中 instanceof 引起的类名查找和致命错误问题