Re: No notices for undefined index
| From: | Shawn McKenzie | Date: | Thu, 08 Apr 2010 20:22:48 +0000 |
| Subject: | Re: No notices for undefined index | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-303926@lists.php.net to get a copy of this message | ||
Shawn McKenzie wrote:
> Bob McConnell wrote:
>> In the first case, $a=5 creates a multi-typed variable. The interpreter
>> makes its best guess how the next two expressions should be interpreted.
>> In both cases, they look a lot like an index into a character array
>> (string), and 'test' evaluates numerically to zero. Both are valid
>> offsets for a string, so no messages are generated.
>>
>> In the second case, $a is explicitly declared as an array. This give the
>> interpreter a lot more detail to work from. The two expressions are now
>> an index and a key for the array. But both of them evaluate to offsets
>> that have not been assigned, which raises a flag and creates the
>> warnings.
>>
>> Such are the joys of loosely typed languages.
>>
>> Bob McConnell
>
> Yes, this is what I was thinking as well, however:
>
> $a=5;
> print $a[0]; // if it is index 0 then it should print 5 yes?
> print $a[100]; // there is no index 100 so why no notice?
>
$a='5';
print $a[0]; // prints 5
print $a[100]; // Notice: Uninitialized string offset: 100
So it seems, in the first case with the integer 5 that the interpreter
is saying:
- Since $a is not an array I'll treat $a[0] and $a[100] as a string
offset, but since $a is not a string I won't do anything.
Just seems stupid IMHO.
--
Thanks!
-Shawn
http://www.spidean.com