Blog

[PHP]array_search()

array_search() 関数で不思議な現象。
 

$ary = array(2, 5, 8, 10);
var_dump(array_search(10, $ary));



とすると、
 

int(1)



が返る。期待どおり。

が、2行目を
 

var_dump(array_search(2, $ary));



にすると、
 

int(0)

 

が返ってきてしまう。

array の先頭要素を 3 に変えて、array_search の needle(第1引数)を 3 にしても同じく 0 (false) が返る。

haystack ( 第2引数、$ary)の先頭要素は常に false になる仕様?(-"-;)

おかしいなあと思ったのでマニュアルを調べる。

PHP マニュアルによれば、
 

needle が見つかった場合に配列のキー、 それ以外の場合に FALSE を返します。
もし haystack に 1 つ以上の needle に見つかった場合、 最初にマッチしたキーが返されます。全てのマッチした値に対するキーを返すためには、代わりに array_keys() にパラメータ search_value を付けて使用してください。



ってことなので、先頭要素の【キー】である 0 が返ってきてるわけか。

見つかってないってことじゃなくて、見つけたけどそのキーが 0 なもんで、「 0 == true」は成り立たない、と。

なので、「===」を使って、ちゃんと比較してあげれば良かった。

 

$ary = array(2, 5, 8, 10);
if ( array_search(1, $ary) === False ) { echo "NOT Found.\n"; }
else { echo "Found.\n";}



PHP のよくひっかかるところをちょうど踏んだな。

この記事へのコメント

コメントはまだありません。

コメントを送る

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  画像の文字を入力してください
 2025/5 
    123
45678910
11121314151617
18192021222324
25262728293031

ブログ投稿者一覧

年別アーカイブ一覧