PHPでは、 Array_ColumnとIN_ARRAYは2つの一般的に使用されている関数であり、配列内の列を抽出し、アレイに値が存在するかどうかを確認するために使用されます。これら2つの関数を組み合わせて使用すると、多次元配列の値が存在するかどうかを効果的に照会できます。
array_column関数は、多次元配列から列の値を抽出し、その列の値を含む新しい配列を返すために使用されます。この関数の基本的な使用法は次のとおりです。
array_column($array, $column_key, $index_key);
$配列:入力多次元配列。
$ column_key :抽出する列の列名またはインデックス。
$ index_key (オプション):返された配列をインデックスでキーにしたい場合は、このパラメーターを渡すことができます。
IN_ARRAY関数は、アレイに値が存在するかどうかを確認するために使用されます。値が存在する場合にtrueを返し、それ以外の場合はfalseを返します。その使用法は次のとおりです。
in_array($needle, $haystack, $strict);
$針:見つける価値。
$ haystack :検索されている配列。
$ strict (オプション): trueに設定されている場合、 in_arrayは厳格な比較を実行します(つまり、値が存在する場合だけでなく、データ型が一致する場合も確認します)。
Array_columnとin_arrayを使用して、多次元配列の特定の列に値が存在するかどうかを効率的に調べます。たとえば、複数のユーザー情報の配列があり、ユーザー名が存在するかどうかを確認する必要があるとします。
次の配列があるとします。
$users = [
['id' => 1, 'name' => 'Tom', 'email' => 'tom@m66.net'],
['id' => 2, 'name' => 'Jerry', 'email' => 'jerry@m66.net'],
['id' => 3, 'name' => 'Spike', 'email' => 'spike@m66.net'],
];
ジェリーが配列に存在するかどうかを確認したいと思います。次の手順に従うことができます。
array_columnを使用して、名前列を抽出します。
in_arrayを使用して、抽出された配列にユーザー名が存在するかどうかを確認します。
$names = array_column($users, 'name'); // すべてのユーザー名を抽出します
$user_exists = in_array('Jerry', $names); // 診る 'Jerry' それは存在するするしますか
if ($user_exists) {
echo "ユーザー Jerry 存在するする";
} else {
echo "ユーザー Jerry 存在するしませんする";
}
単純な値だけでなく、複数の条件に基づいて確認する必要がある場合もあります。 array_columnとin_arrayを組み合わせることにより、特定の列に特定の値を見つけることができます。この方法は、大規模なデータセットを処理するときに非常に効率的であり、手動で多次元アレイを通過するという退屈な動作を回避します。
たとえば、特定のメールアドレスが存在するかどうかを確認する場合:
$emails = array_column($users, 'email'); // 提取所有ユーザー的郵便
$email_exists = in_array('jerry@m66.net', $emails); // 診る郵便それは存在するするしますか
if ($email_exists) {
echo "郵便 jerry@m66.net 存在するする";
} else {
echo "郵便 jerry@m66.net 存在するしませんする";
}
PHPでは、 Array_ColumnとIN_ARRAYは、特により大きな配列を扱う場合、比較的効率的な機能です。 IN_ARRAYを直接使用して多次元配列を検索すると、アレイ全体を通過しますが、これは効率が低くなります。最初にArray_Columnを使用してターゲット列を抽出し、次に検索にIN_ARRAYを使用することにより、不必要な比較操作を削減し、パフォーマンスを改善できます。
Array_columnとin_arrayを組み合わせて使用することは非常に効率的な方法であり、特に多次元配列に値が存在するかどうかを見つけるのに適しています。最初に必要な列を抽出し、 IN_ARRAYを使用してターゲット値が存在するかどうかを確認することにより、クエリ効率を改善し、コードの複雑さを減らすことができます。このアプローチは、より大きなデータセットを処理するときにパフォーマンスを大幅に改善できます。