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 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php