array_search() 関数で不思議な現象。
とすると、
が返る。期待どおり。
が、2行目を
にすると、
が返ってきてしまう。
array の先頭要素を 3 に変えて、array_search の needle(第1引数)を 3 にしても同じく 0 (false) が返る。
haystack ( 第2引数、$ary)の先頭要素は常に false になる仕様?(-"-;)
おかしいなあと思ったのでマニュアルを調べる。
PHP マニュアルによれば、
ってことなので、先頭要素の【キー】である 0 が返ってきてるわけか。
見つかってないってことじゃなくて、見つけたけどそのキーが 0 なもんで、「 0 == true」は成り立たない、と。
なので、「===」を使って、ちゃんと比較してあげれば良かった。
PHP のよくひっかかるところをちょうど踏んだな。
$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 のよくひっかかるところをちょうど踏んだな。