PHPプログラミングでは、配列は非常に一般的に使用されるデータ構造です。多くの場合、配列から特定の要素のインデックスを見つける必要があるシナリオに遭遇します。幸いなことに、PHPはArray_ColumnやArray_Searchなどの非常に便利な機能を提供し、そのような操作を効率的に実行するのに役立ちます。この記事では、これら2つの関数を使用して配列レコードのインデックスを見つける方法について説明します。
Array_Column関数は、多次元配列から特定の列を抽出するためにPHPが使用するツールです。列を指定し、列のすべての値を抽出し、列のすべての値を含む新しい配列を返すことができます。
array_column(array $array, mixed $column_key, mixed $index_key = null): array
$ array :入力多次元配列。
$ column_key :抽出される列のキー名(配列の各要素が連想配列である場合)。
$ index_key :オプションのパラメーター、新しい配列のキーを指定します。提供されていない場合、返された配列は元の配列のキーを使用します。
複数のレコードを含む配列があり、各レコードは連想配列であり、これらのレコードからID列のすべての値を抽出すると仮定します。
$records = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net']
];
// 使用 array_column 抽出する id リスト
$ids = array_column($records, 'id');
print_r($ids);
出力結果:
Array
(
[0] => 1
[1] => 2
[2] => 3
)
array_columnを使用すると、配列内のすべてのレコードのID列を正常に抽出しました。
array_search関数は、配列内の値を検索し、アレイ内の値のインデックスを返すために使用されます。 array_columnで使用すると、特定のレコードのインデックスを見つけるのに役立ちます。
array_search(mixed $needle, array $haystack, bool $strict = false): int|string|false
$針:私たちが探している価値。
$ haystack :検索する配列。
$ strict :オプションのパラメーター、厳格な比較を実行するかどうか(デフォルトはfalse 、つまり、非厳格な比較を実行します)。
複数のレコードを備えた配列があり、名前がボブのレコードのインデックスを見つけたいとします。
$records = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net']
];
// 使用 array_column 抽出する所有的 name リスト
$names = array_column($records, 'name');
// 探す name のために 'Bob' のインデックス
$index = array_search('Bob', $names);
echo "Bob のインデックス是: $index"; // 出力: Bob のインデックス是: 1
特定の条件を満たす完全なレコードを見つけたい場合は、最初にArray_Columnを使用して興味のある列(名前列など)を抽出し、 Array_Searchを使用してその列の値に対応するインデックスを見つけてから、このインデックスを使用してレコード全体を返します。
$records = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net']
];
// 抽出する所有 name リスト
$names = array_column($records, 'name');
// 探す name のために 'Charlie' のインデックス
$index = array_search('Charlie', $names);
// 完全なレコードに戻ります
if ($index !== false) {
$record = $records[$index];
print_r($record);
}
出力結果:
Array
(
[id] => 3
[name] => Charlie
[email] => charlie@m66.net
)
この例では、 Array_Columnを介して名前のすべての値を抽出し、 Array_Searchを使用してCharlieの対応するインデックスを見つけ、最後にこのインデックスを介して完全なレコードを取得します。
上記は、 array_columnとarray_search関数を使用してPHPでレコードインデックスを見つける基本的な方法です。これらの2つの機能は、多次元配列を扱う際に非常に便利なツールであり、検索操作を大幅に簡素化できます。複雑なデータ構造を扱っている場合は、これらの方法を試してください。
この記事があなたに役立つことを願っています!質問がある場合、またはさらにサポートが必要な場合は、お気軽にご質問ください。