Re: 2 errors I can not understand

From: Date: Wed, 14 Mar 2007 12:42:09 +0000
Subject: Re: 2 errors I can not understand
References: 1 2 3 4 5 6 7  Groups: php.general 
Request: Send a blank email to php-general+get-250554@lists.php.net to get a copy of this message
Robert Cummings wrote:
On Wed, 2007-03-14 at 12:57 +0100, Tijnema ! wrote:
On 3/14/07, Myron Turner <turnermm02@shaw.ca> wrote:
    
Richard Lynch wrote:
On Tue, March 13, 2007 6:04 pm, Jonathan Kahan wrote:
        
This did fix the problem but I am amazed that
$s%$d=0 would be interpereted as a statement assigning d to 0 since there is some other stuff in front of d... I would think that would produce an error at compile time since $s%$d is an illegal variable name. Normally when my php script errors at compile time nothing will display to the screen.
          
You still have not correctly puzzled out what $s % $d = 0 is doing... The = operator takes precedence, and $d is set to 0.
        
But why? According to the manual, the modulus operator has precedence over the equals! So shouldn't this expression resolve to: ($s % $d) = 0 which gives an error?
      
  
Might it be that it generates only an error in specific error levels?
Simple proof of precedence problem: <?php
    $x = 6; $y = 4;
    echo ($x%$y=5)."\n";
    echo ($x%$y=4)."\n";
?> Cheers, Rob. This illustrates what in fact happens. But I still don't understand why, since, given the precedence of these operators, the = should be applied after the modulus. The expression should resolve to ($x % $y) = 5 and not to $x % ($y=5). Or shouldn't it? -- _____________________ Myron Turner http://www.room535.org http://www.bstatzero.org http://www.mturner.org/XML_PullParser/

« previous php.general (#250554) next »