Tom Barnes wrote:
> Check out this code:
>
> // Start Code -------------
> function test_in_array($val)
> {
> $a = array('key' => $val);
> printf("in_array: %d, value:%s<BR>", in_array('key', $a), $a['key']);
> }
> test_in_array(0);
> test_in_array(1);
> // End Code ---------------
>
> The output I get is:
>
> in_array: 1, value:0
> in_array: 0, value:1
>
> Why does the second in_array() call fail???
Wrong question! The right question is:
"Why does the first in_array() call return true?"
And the answer is:
Because 'key' is converted to numeric, to 0 (zero) and 0 (zero) *is* in
the $a array.
The second in_array() call tries to find a 'key' (or 0) but fails
because the value in the array is 1.
Try specifying the third parameter to the in_array() call ...
in_array('key', $a, true)
Happy Coding :-)
--
USENET would be a better place if everybody read:
http://www.expita.com/nomime.html
http://www.netmeister.org/news/learn2quote2.html
http://www.catb.org/~esr/faqs/smart-questions.html