|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #10770 . (concatenation) preceeds mathematical operations in order of execution
Submitted: 2001-05-09 19:21 UTC Modified: 2001-05-09 19:57 UTC
From: vitaliyf at gameaholic dot com Assigned:
Status: Closed Package: Feature/Change Request
PHP Version: 4.0.5 OS: Linux
Private report: No CVE-ID: None
 [2001-05-09 19:21 UTC] vitaliyf at gameaholic dot com
  print "hello " . $i-2 . " world";

will output:   -2 world

("hello " . $i is evaluated into "hello 10", then 2 is subtracted (by casting "hello 10" into a 0, then subtracting 2).  Then "world" is appened, thus giving us "-2 world")

I think this might be way counter-intuitive to what should be happening: - (or all other operations) should be avaluated first, and concatenation last, producing "hello 8 world".

Or how about this example, which definately can confuse some people:

print "Hello is less than " . 1+strlen('hello') . " characters long.";

Workaround: use () to arrange things to be executed in proper order but that might not be obvious for someone who doesn't know about this situation.

Thanks PartyZan for finding this.


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2001-05-09 19:57 UTC]

. and - are equal. Use ()'s to override it.


PHP Copyright © 2001-2023 The PHP Group
All rights reserved.
Last updated: Thu Dec 07 05:01:29 2023 UTC