class wat
{
public $a = 3.14;
public $x = 9;
public $y = 2;
}
$a = new wat();
var_dump(1000 + $a);
var_dump($a + 1000);
输出是:
int(1001)
int(1001)
好吧,添加 wat * object to an integer 显然不是正确的做法,因为 PHP 提示说 “Object of class wat could not be converted to int”,但是,它有什么作用?
(我问这个也有一个实际的原因,我想重构一个函数来摆脱“PHP Notice”,同时仍然保持行为完全不变。)
*: http://img.youtube.com/vi/kXEgk1Hdze0/1.jpg
最佳答案
加法 (+
) 如果其中一个是 float
,则将两个操作数隐式转换为 float
,否则两个操作数都转换为 整数
( See paragraph #2 .)
看起来,至少现在,一个 object
转换为 int
的结果是值 1
,因此结果 1000 + 1 = 1001
或 1 + 1000 = 1001
,但是,per the documentation ,行为未定义,不应依赖。
如果您打开了 E_NOTICE
错误报告,还应该生成一个通知,说明该对象无法转换为 int。
关于php - 在 PHP 中将对象和整数相加的语义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16337275/