doukuanyong1939
2015-10-01 13:37
浏览 45
已采纳

有人能解释Php中奇怪的行为吗? [关闭]

This is not possible in Python:

Python 2.7.3
[GCC 4.7.2] on linux2
>>> b = 15
>>> a = 15 + b = 16
  File "<stdin>", line 1
SyntaxError: can't assign to operator
>>>

I can test the same in C, C++, Java and JavaScript...

var b=15 ; var a = 15+ b = 15
VM155:2 Uncaught ReferenceError: Invalid left-hand side in assignment(…)

But can someone explain me why this works in Php, and why?

php -r '$b = 15; $a = "45". $b = 15;'
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • doubu1853 2015-10-01 13:40
    已采纳

    When an assignment happens, PHP returns the value that was assigned.

    So if you were to do echo $a = 3; you would get 3 in the PHP out.

    Another example from the same docs linked above:

    $a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4.
    

    Simply put, it's desired behaviour in the context of the language and its documentation. Python doesn't adopt this behaviour.

    Interestingly, I can also do this with other quite powerful programming languages. Here's Ruby:

    vagrant@ubuntu-14:/vagrant$ irb
    2.1.2 :001 > a = (b = 4) + 5
     => 9 
    2.1.2 :002 > b
     => 4 
    
    打赏 评论
  • dongsi5381 2015-10-01 13:47

    You may say that is an unfortunate feature that can induce you to an error, but nothing is wrong with syntax. PHP evaluates this as an assignment expression. When you say $a = 'some string' . $b = $c you are concatenating 'some string' to php evaluation result for $b = $c.

    打赏 评论

相关推荐 更多相似问题