PHPのarray_search()の最初の要素
phpである配列内に特定の値が存在するかどうか(あったらその場合~する)みたいな事をたまにやることがあるんですけど、そういう時にif文の条件でarray_search()
を使うと自分が意図した挙動通りに動かない事があったのでメモ
そもそもarray_search()って何
指定した値を配列で検索し、見つかった場合に対応する最初のキーを返す
https://www.php.net/manual/ja/function.array-search.php
困ったこと
下記のようなコードの場合…
$food = ['cola', 'karaage', 'rice'];
if (array_search('cola', $food)) {
echo 'brown';
}
if (array_search('karaage', $food)) {
echo 'sakusaku!';
}
// コイツは配列に無いので出ない
if (array_search('banana', $food)) {
echo 'yellow';
}
if (array_search('rice', $food)) {
echo 'white';
}
下記のような結果になる。
sakusaku!white
つまりarray_search()
の配列のキーが0(最初の要素)の場合false判定される
解決策
まぁそもそもこういう場合はin_array()
を使いなさいよって話なんですが、
$food = ['cola', 'karaage', 'rice'];
if (array_search('cola', $food) !== false) {
echo 'brown';
}
if (array_search('karaage', $food) !== false) {
echo 'sakusaku!';
}
// コイツは配列に無いので出ない
if (array_search('banana', $food) !== false) {
echo 'yellow';
}
if (array_search('rice', $food) !== false) {
echo 'white';
}
brownsakusaku!white
型判定はちゃんとしようねっていうお話でした😢