Fwd: [PHP] Boolean type forced on string assignment inside if statement
| From: | Marc Guay | Date: | Thu, 03 Jan 2013 17:50:27 +0000 |
| Subject: | Fwd: [PHP] Boolean type forced on string assignment inside if statement | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-320015@lists.php.net to get a copy of this message | ||
I received the message below addressed only to me, but I believe the
group could benefit. It looks like the single pipe is a bitwise
operator so you will get an integer as a result (and probably other
weird things to discover when using it on non-numbers).
http://php.net/manual/en/language.operators.bitwise.php
---------- Forwarded message ----------
From: Volmar Machado <qi.volmar@gmail.com>
Date: 3 January 2013 12:42
Subject: Re: [PHP] Boolean type forced on string assignment inside if statement
To: Marc Guay <marc.guay@gmail.com>
My results in a simple test:
<?php
$a = true;
$b = false; // either null, or 0
echo ('($a | $b))' . ($a | $b) . '<br>'); //1
echo ('($a || $b))' . ($a || $b) . '<br>'); //1
echo ('($b | $a)' . ($b | $a) . '<br>'); //1
echo ('($b || $a)' . ($b || $a) . '<br>'); //1
echo ('($a | $a)'. ($a | $a) . '<br>'); //1
echo ('($a || $a)' . ($a || $a) . '<br>'); //1
echo ('($b | $b)' . ($b | $b) . '<br>'); //0
echo ('($b || $b)' . ($b || $b) . '<br>'); //false(outputs nothing)
?>
2013/1/3 Marc Guay <marc.guay@gmail.com>:
>> Now, I am not sure as to where that would mean anything. Can anyone provide an example
>> where using a single pipe would produce different results than using a double pipe?
>
> If PHP had "Eager operators" (thanks Wikipedia), then your first
> example would have different output
>
> if (($a = 'foo') | ($b = 'bar'))
> {
> echo "$a <br > $b";
> }
> else
> {
> echo 'Neither are populated';
> }
>
> Would spit out:
> foo
> bar
>
> rather than just
> foo
>
> No?
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>