Re: Boolean type forced on string assignment inside if statement
| From: | John Iliffe | Date: | Thu, 03 Jan 2013 16:44:20 +0000 |
| Subject: | Re: Boolean type forced on string assignment inside if statement | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-320007@lists.php.net to get a copy of this message | ||
On Thursday 03 January 2013 11:33:22 Marc Guay wrote:
> > First, did the original poster realize that he was assigning a value
> > to the variable $a in the 'if' statement?
>
> Hello,
>
> Yes, I did, and if you read my responses you can see that I came to
> the realisations you describe. I don't think that anyone suggested
> there was a bug.
>
> > $a is true (ie it is not set to a 'false' value,
> > whatever PHP uses for false) and $b is "bar" because that is what it
> > is set to. Since the evaluation is within a bracket, the interior
> > values ($a, $b) are set BEFORE the if condition is evaluated.
>
> Regarding this I'm a bit confused. In the case of an OR operator, $b
> is not "bar" because it follows the "true" path as you said earlier.
> Probably just a glitch in the English language. I'll file a bug for
> that.
>
> Marc
Hi Marc:
I'm not at all sure of that.
There are two things happening in parallel here: first the interior of the
brackets is evaluated as necessary, in this case the $a is set to "foo" and
the $b is set to "bar". Then the exterior part of the statement is
evaluated: if ($a..... ). It is this last operation that results in the
path selection through the code, and in this case $a is "true", $b is not
evaluated. ....mind you I'm basing this on my university basic programming
course from almost 50 years ago :-)
Regards,
John