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