今回は、PHPにおける配列検索について解説します。具体的には、array_search関数とin_array関数に焦点を当てます。これらの関数は、配列内の要素を検索するための便利なツールです。それぞれの関数の使い方や動作について詳しく説明し、実際の使用例もご紹介していきます。
配列検索とは
配列検索とは、配列の中から特定の値やキーを検索することです。PHPには、配列検索を行うための様々な関数が用意されていますが、その中でも、array_search関数とin_array関数がよく使われます。
配列検索の方法
array_search関数の使用方法
array_search関数は、指定した値を配列内で検索し、その要素のキーを返します。もし要素が見つからなかった場合は、falseを返します。以下に、array_search関数の基本的な構文を示しています。
array_search(検索する値, 検索対象の配列, 型の比較を行うか)
第一引数には、検索したい値を指定します。第二引数では、検索を行う配列を指定します。第三引数にtrueを指定すると型の比較も行います。省略可能。
以下にサンプルコードを書いていますので参考にしてください。
サンプルコード1: 文字列の検索
$fruits = array('apple', 'banana', 'orange', 'grape');
$result = array_search('apple', $fruits);
echo $result; // 0
このコードでは、配列 $fruits 内で文字列 “apple” を検索しています。
値が見つかった場合は、その要素のキーを返します。
また、大文字小文字は区別して比較が行われます。
サンプルコード2: 数値の検索
$numbers = array(10, 20, 30, 40, 50);
$result = array_search(60, $numbers);
var_dump($result); // bool(false)
このコードでは、配列$numbers 内で数値 60を検索しています。
60は$numbers に存在しないのでfalseが返されます。
サンプルコード3: 型の比較を行う検索
$array = ['1', '2', 3, 4, '5'];
$result = array_search(2, $array, true);
var_dump($result);
このコードでは、配列 $array内で数値 2を厳密な型比較で検索しています。
第三引数にtrueを指定することで、型の比較も行うため検索する値の整数2と配列の文字列’2’は別のものとみなされ、falseが返されます。
in_array関数の使用方法
次に、in_array関数について説明します。in_array関数は、指定した値が配列内に存在するかどうかを確認するために使用されます。もし要素が見つかった場合は、trueを返します。見つからなかった場合は、falseを返します。以下に、in_array関数の基本的な構文を示しています。
in_array(検索する値, 検索対象の配列, 型の比較を行うか)
引数はarray_searchと同じです。
第一引数には、検索したい値を指定します。第二引数では、検索を行う配列を指定します。第三引数にtrueを指定すると型の比較も行います。省略可能。
array_search関数と引数も同じでよく似ていますが、戻り値がインデックスキーではなくtrueまたはfalseである点が異なります。
サンプルコード1
$array = ['apple', 'banana', 'orange', 'grape'];
$result = in_array('apple', $array);
var_dump($result); // bool(true)
このコードでは、配列$arrayから”apple”を検索しています。
値が見つかっているので、”bool(true)”を返しています。
サンプルコード2
$array = ['apple', 'banana', 'orange', 'grape'];
$result = in_array('pineapple', $array); var_dump($result); // bool(false)
このコードでは、配列$arrayから”pineapple”を検索しています。
値が見つからなかったので、”bool(false)”を返しています。
多次元配列の検索方法
多次元配列は、PHPでデータを効率的に整理するための手段です。しかし、特定の値やキーを持つ要素を見つける必要がある場合、効果的な検索方法を知っていることが重要です。
array_search関数やin_array関数は多次元配列の値を検索することができません。
そのため多次元配列で値を検索する場合は、array_column関数を指定します。
array_column関数の使用方法
array_column関数は、多次元配列から指定したキーの値を抽出し、新しい配列を作成します。この関数は、特定のキーに基づいて配列をフィルタリングする場合に非常に便利です。
以下はarray_column関数の基本構文になります。
array_column(値を取り出したい多次元配列, 値を返したいカラム [,$インデックスに指定するカラム名])
第1引数で対象となる多次元配列を指定します。第2引数に抽出する値のキーを指定します。
第3引数には、オプションで、取り出したカラム名のキー名となるカラム名を文字列で渡せます。デフォルトでは、null値を渡しています。
これらの引数を渡した結果、第一引数で渡した配列の中から第二引数に渡したカラム名の文字列を探し出します。そのカラム名に対する値のみを抽出し、配列として返却します。
サンプルコード
それでは実際に書いてみましょう。
<?php
$rows = [
0 => [ 'id' => 1, 'fruit' => 'pineapple', 'price' => 500],
1 => [ 'id' => 2, 'fruit' => 'apple', 'price' => 200],
2 => [ 'id' => 3, 'fruit' => 'grape', 'price' => 600],
3 => [ 'id' => 4, 'fruit' => 'orange', 'price' => 100 ]
];
$column = array_column($rows, 'fruit');
print_r($column);
?>
出力結果
Array
(
[0] => pineapple
[1] => apple
[2] => grape
[3] => orange
)
このコードでは、$rowsという多次元配列から“fruit”キーの値を抽出し、新しい配列$columnに格納しています。
array_column関数を利用することで、DBから取得した値を用意に加工できます。
まとめ
今回はarray_search関数とin_array関数を使った配列の検索方法。また、array_column関数を使った多次元配列の検索方法についてご紹介しました。
最後までお読み頂きありがとうございました!