我把这段代码展示给了我的朋友
$user->attempts++; // the attempts property returns an int
他就像是在说这个代码是多么愚蠢,漫无目的地说数字运算符在附加到对象时会产生语法错误;事情是它按照我的预期工作(增加尝试1,哦是的,我测试了它)
所以我问,为什么这到底有效?
答案 0 :(得分:18)
因为你的朋友错了
答案 1 :(得分:4)
它有效,因为它是有道理的。 $user->attempts
是一个整数。忘记它附着在一个物体上;这是一个整数。如果++
没有工作,我会感到惊讶。
但是,我经常发现PHP语法不能像我预期的那样工作,而且它在将来的版本中已得到修复。这是人们通常希望它工作的那种事情,但鉴于个人使用PHP的经验,可能会降低一个人的期望。也许这就是你朋友的感受。
答案 2 :(得分:2)
因为它是$ user指向的类中的变量。
class User {
public $attempts = 0;
}
$user = new User;
$user->attempts++; // works.
对于数组来说,它与变量的位置无关:
$foo = array('bar' => array('baz' => 0));
$foo['bar']['baz']++; // works.