[PHP-users 26260] Re: in_array の挙動について
ごき◆
info @ goki.org
2005年 7月 22日 (金) 02:02:11 JST
高橋と申します。
> 井上です。
> お世話になります。
>
> 表題の件ですが、 in_array の挙動で納得がいかないので教えて下さい。
>
> 以下のようなプログラムを作成し、実行すると、
>
> --- test.php ---
> <?
> $ary = array("a","b","c");
> var_dump( in_array( 0 , $ary ) );
> ?>
> --- test.php ---
>
> $ php ./test.php
> bool(true)
>
> となるのですが、これは正しい動作なのでしょうか?
> ちなみに 0 を "0" や false に変更すると
> bool(false)
> になります。
>
恐らく型変換されているためと思います。
in_arrayの3番目の引数として true を指定すれば良いかと思います。
型変換についてはマニュアルの型>文字列の文字列への変換にあるように
文字列が有効な数字では無いためにゼロになるのかと。
例えば同じページの下のほうにあるサンプルで
<?php if (0=='yes') echo "no!!!"; ?>
これも真となります。
ちなみに
<?php if (0==='yes') echo "no!!!"; ?>
は偽となります。
PHP-users メーリングリストの案内