Re: Ranges for case statement and a WTF moment.
| From: | Richard Quadling | Date: | Thu, 07 Apr 2011 08:39:18 +0000 |
| Subject: | Re: Ranges for case statement and a WTF moment. | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-312293@lists.php.net to get a copy of this message | ||
On 6 April 2011 21:08, David Harkness <david.h@highgearmedia.com> wrote:
> On Tue, Apr 5, 2011 at 8:28 AM, Richard Quadling <rquadling@gmail.com>
> wrote:
>>
>> php -r "var_dump(10...19);"
>>
>> Interesting output ...
>>
>> string(6) "100.19"
>>
>> And that took me a little while to work out.
>>
>> It's all to do with PHP's type juggling.
>>
>> 10...19
>>
>> What I'm not sure is why the middle empty string is output as 0.
>>
>> "10" . . ".19" becomes "10" . "0" . ".19"
>> which becomes "100.19"
>
> My guess is that PHP parses this as
> 10<decimal-point> <dot-operator> <decimal-point>19
> Because the dot operator requires strings, PHP converts both numbers to
> strings as
> '10' <dot-operator> '0.19'
> which becomes your
> 100.19
> You can see this with
> php > echo (string) 10.
> 10
> php > echo (string) .19
> 0.19
> David
>
Aha! Yes. That makes a LOT more sense.
Excellent deduction.
So. Not a bug at all. Just a really weird sequence.
And obviously, spaces and more dots can't work.
Richard.
--
Richard Quadling
Twitter : EE : Zend
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY