> so I'm taking that as double's are allowed, so the documentation
> need's to reflect that, since it currently says integers or strings
> are only allowed.
>
Sort of.....Strings and Integers *ARE* the only truly valid indices for
arrays.  Other types are loosely allowed using some basic translation
criteria.

Doubles get converted to longs in a floor() style behavior:

i.e.: $a[1.1234] => $a[1], $a[980.829] => $a[980]

Booleans are converted to either 0 or 1:

i.e.: $a[false] => $a[0], $a[true] => $a[1]

Resources are translated to their resource ID number:

This is a little less obvious in its meaning.  For example, if I $fp =
fopen('foo.txt', 'r') it'll return a resource, if you var_dump($fp) that
resource you might see something like:   Resource #4 (stream).   That "4" is
the unique identifier of the resource that the variable points to.  What
this means for array indices is that:   $a[$fp] => $a[4]

I don't particularly care for the behavior of resources, but *eh* whatcha
gonna do, it's probably there for BC reasons which go back to PHP3.

Apart from the above, only string and integer types are allowed which are
used untranslated:

$a[7] => $a[7]

$a['foo'] => $a['foo']

> And if so is this a php5 thing only or php4 also?
>
This particular translation bug existed in ZE1 (PHP4) as well.  I MFH'd the
fix already.

-Sara

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to