[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 メーリングリストの案内