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