Thomas Goyne wrote:
> On Thu, 17 Jun 2004 16:52:32 -0500, Michael Sims
> <[EMAIL PROTECTED]> wrote:
>> ceil() returns a variable of type double. In the above script I
>> expected $foo to become an empty array after calling unset(). But
>> it seems that unset() will not remove an array element when you
>> refer to its key using a double, although isset() will return true
>> when referenced the same way. If I cast $b to either an int or a
>> string, the unset call works. Am I just missing the portion of the
>> manual that documents this behavior, or is this a bug? Just thought
>> I'd see if anyone had run across this before...TIA
>>
> == does not check type in php.
Yes, I'm aware of that. That's not what my post was about.
> However,
> array indexes are type specific, so $a[2] != $a['2'].
That's incorrect (at least with PHP 4.3.7). PHP will happily cast your array index
and compare it without regard to type in some cases, as a simple test illustrates:
<quote>
$a[2] = 1;
if ($a[2] == $a['2']) {
print "Arrays indexes are not type specific, at least not in all cases.\n";
}
if ($a[2] == $a[(double) 2]) {
print "Integers and doubles compare, even when using '=='.\n";
}
if (isset($a[(double) 2])) {
print "isset() doesn't have a problem casting the array index.\n";
}
unset($a[(double) 2]);
if (isset($a[2])) {
print "It appears that only unset() has a problem with this.\n";
}
</quote>
generates:
<quote>
Arrays indexes are not type specific, at least not in all cases.
Integers and doubles compare, even when using '=='.
isset() doesn't have a problem casting the array index.
It appears that only unset() has a problem with this.
</quote>
It's the behavior that is specific to unset() that I'm puzzled about.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php