本記事では、PHPで配列の何番目に特定の値があるか確認する方法について解説しています。
- PHPの基本構文からクラス・データベース連携・セキュリティまで学べる
- PHPによるWebアプリ開発の基礎・基本テクニックを学べる
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
変数名/関数名にもう悩まない!
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
array_search関数の使い方
配列の何番目に特定の値があるか調べたい時は、array_search関数を使用します。基本的な使い方は以下のとおりです。
$result = array_search($needle, $haystack [, $strict = false]);
- $result:検索したい値を見つけた場合はインデックス番号(添え字)を返し、見つけられなかった場合はfalseを返す。
- $needle:検索したい値を指定
- $haystack:対象の配列を指定
- $strict:等価演算子(==)で比較する場合はfalseを指定し、厳密等価演算子(===)で比較する場合はtrueを指定します。デフォルト値はfalse。(省略可能)
array_search関数を使用したサンプルコードを用意したので、動作確認してみましょう。
<?php
$fruitsArr = ['Apple', 'Banana', 'Strawberry', 'watermelon', 'melon', '1'];
echo array_search('Strawberry', $fruitsArr); // 2
echo array_search('pear', $fruitsArr); // false
echo array_search(1, $fruitsArr); // 5
echo array_search(1, $fruitsArr, true); // false
1つ目のarray_search関数は、検索したい値に「Strawberry」を指定しています。対象の配列にはStrawberryが代入されているため、そのインデックス番号を返しています。
2つ目のarray_search関数は、検索したい値に「pear」を指定しています。対象の配列にはpearは代入されていないため、falseを返しています。
3つ目と4つ目のarray_search関数は、検索したい値は同じですが4つ目の方だけ第三引数にtrueを指定しています。配列に代入されている「’1’」は文字列でarray_search関数の第一引数に指定している「1」は数値なので厳密等価演算子で比較した場合はfalseになります。
もし配列に値が存在するか確認したい時は
もし、配列に値が存在するか確認だけしたい時は、in_array関数を使用することをオススメします。条件式としてarray_search関数を使用してしまうと、もし配列の先頭に検索したい値がヒットした時戻り値としてインデックス番号「0」が返されます。これはfalsyの値になってしまうため、本当は見つけたのにプログラムは値を見つけられなかったと判定してします。
JavaScriptの記事になってしまいますが、truthyとfalsyについての記事を書いているので興味のある方はご覧ください。