ID:          17180
 Updated by:  [EMAIL PROTECTED]
 Reported By: [EMAIL PROTECTED]
 Status:      Analyzed
 Bug Type:    Scripting Engine problem
 PHP Version: 4.2.0
 New Comment:

This behaviour is capable to confuse the developer and if this is
"features" it must be documented in manual.


Previous Comments:
------------------------------------------------------------------------

[2002-05-13 18:20:14] [EMAIL PROTECTED]

Well, but it's stupid to do something like that. It makes no sense to
assign anything to NOT(a variable), so PHP takes care of that by
changing the precedence a little in this case.

------------------------------------------------------------------------

[2002-05-13 17:56:54] [EMAIL PROTECTED]

Yes, I want ASSIGN value to $a and check assigned value.

But parser must say: "parser error", becouse it can not assign value to
constant.


Please reopen.

------------------------------------------------------------------------

[2002-05-13 17:48:54] [EMAIL PROTECTED]

"if (!$a = foo(FALSE))" --> you're assigning the output of foo(FALSE)
to $a
"if (!$a == foo(FALSE))" --> you're comparing !$a and foo(FALSE)

------------------------------------------------------------------------

[2002-05-13 09:36:32] [EMAIL PROTECTED]

Why & How this code will work?

  <?
   function foo($flag)
   {
      return $flag;
   }

   $a=TRUE;

   echo "if (!\$a = foo(FALSE))) is ";

   if (!$a = foo(FALSE))
     echo "true";
   else
     echo "false";

   echo "\n";
   var_dump($a);
   echo "\n";
  ?>
  
  Output:

  if (!$a = foo(FALSE))) is true
  bool(false)

  http://www.php.net/manual/en/language.operators.php "Operator
Precedence"

  `!` has more precedence than `=`

  And after `!` we must have boolean constant in left side:

  FALSE = foo()

  Explain to me pls that I do not understand

  P.S. in C & Perl (!$a = foo()) is not valid expression

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=17180&edit=1

Reply via email to