FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » loose thinking
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: loose thinking [message #176783 is a reply to message #176782] Tue, 24 January 2012 13:32 Go to previous messageGo to previous message
M. Strobel is currently offline  M. Strobel
Messages: 386
Registered: December 2011
Karma:
Senior Member
Am 24.01.2012 14:04, schrieb "Álvaro G. Vicario":
> El 24/01/2012 11:57, M. Strobel escribió/wrote:
>> I hate this sloppiness of PHP:
>>
>> strobel@s114-intel:~> php -a
>> Interactive shell
>>
>> php> $a[null] = 'you are Nothing';
>> php> var_dump($a);
>> array(1) {
>> [""]=>
>> string(15) "you are Nothing"
>> }
>> php> $i=null;
>> php> $a[$i] = 'you are Nothing';
>> php> var_dump($a);
>> array(1) {
>> [""]=>
>> string(15) "you are Nothing"
>> }
>> php> var_dump(key($a));
>> string(0) ""
>>
>> There is no difference between an empty string and null in array indexing. That is
>> stupid. Why does the language not just respect my definitions?
>
> Because your make your definitions fit in something that already have a previous
> definition. String keys must be integers or strings, as documented:
>
> http://es.php.net/manual/en/language.types.array.php#language.types.array.s yntax.array-func
>
>
> It's the same situation where you pass a float to a function that's defined to expect
> a string: your param will be cast to the target data type.
>
> As about the array key definition, a key is an identifier so I think it's reasonable
> to make it a string.
>
> Having arrays where keys can be any arbitrary data type looks like an (ahem)
> interesting idea but you'll have to implement it yourself. If it can actually be done
> in pure PHP, the tool is possibly the ArrayIterator interface:
>
> http://es.php.net/manual/en/class.arrayiterator.php
>
>
>
Okay I see it is well documented. I just started testing.

I am angry about it because not even isset() respects the null value here. I think it
makes more sense this way: isset($a[null]) should return false, because there is no
null index.

The point is that the designers of PHP (if you can talk about design here) probably
meant to help programmers in not making all these hideous type distinctions, but the
outcome is you have to be really careful about loose comparison and unwanted type
conversion, having to write even more if constructs.

/Str.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Open Source Customization
Next Topic: Product page getting Redirect back to Home page - Please Fix
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sun Nov 24 09:56:07 GMT 2024

Total time taken to generate the page: 0.04397 seconds