PHPでは、アレイ操作が非常に一般的です。頻繁に検索する必要があるデータの場合、効率的なルックアップテーブルを使用すると、プログラムのパフォーマンスが大幅に向上する可能性があります。 array_combineとin_array()は、ルックアップテーブルを効率的に構築し、迅速な検索を行うのに役立つ2つの非常に便利な機能です。この記事では、これら2つの機能を使用して効率的な検索を実現する方法について説明します。
array_combine()は、新しい配列を作成するために使用される関数です。キーとしての最初の配列と値としての2番目の配列の2つの配列を受け入れます。これらの2つの配列の要素に対応して、キー価値ペアの配列を生成します。
array_combine(array $keys, array $values): array
渡された2つの配列の長さが等しくない場合、 array_combine()はfalseを返します。この関数は、アレイのキーをクエリアイテムとして使用し、クエリの結果として配列の値を使用できるため、ルックアップテーブルの構築に非常に適しています。
in_array()は、値が配列に存在するかどうかを確認するために使用される関数です。値が配列に存在する場合、 trueを返します。それ以外の場合は偽りです。
in_array(mixed $needle, array $haystack, bool $strict = false): bool
この機能は、特に構築されたルックアップテーブルに要素が存在するかどうかを確認する必要がある場合に、検索操作に非常に便利に使用できます。
ユーザーIDのセットと対応するユーザー名があり、ユーザーIDを介して対応するユーザー名をすばやく見つけたいとします。 array_combine()を使用してルックアップテーブルを作成し、 in_array()を使用して、ルックアップテーブルにIDが存在するかどうかを確認できます。
<?php
// ユーザー ID 配列
$user_ids = [101, 102, 103, 104, 105];
// ユーザー名配列
$usernames = ["alice", "bob", "charlie", "david", "eve"];
// 使用 array_combine ルックアップテーブルを作成します
$user_lookup = array_combine($user_ids, $usernames);
// 检查某个ユーザー ID それは存在するしますか
$search_id = 103;
if (in_array($search_id, array_keys($user_lookup))) {
echo "ユーザー ID $search_id 存在する,ユーザー名是:" . $user_lookup[$search_id];
} else {
echo "ユーザー ID $search_id 存在しませんする。";
}
?>
上記のコードでは、ユーザーIDアレイとユーザー名配列をArray_combine()を使用してルックアップテーブル$ user_lookupに結合し、 in_array()とarray_keys()を使用してユーザーIDが存在するかどうかを判断します。 array_keys($ user_lookup)ルックアップテーブル(つまり、ユーザーID)のすべてのキーを取得し、 in_array()を使用して、探しているIDが含まれているかどうかを判断します。
ルックアップテーブルにURLが含まれ、URLにドメイン名が含まれている場合、 str_replace()またはその他の文字列処理関数を使用して、ドメイン名を指定された値に置き換えることができます。たとえば、URLを含む配列がある場合、ドメイン名をM66.netに置き換えることができます。
<?php
// オリジナル URL 配列
$urls = [
"https://example.com/page1",
"https://example.com/page2",
"https://example.com/page3"
];
// 使用 array_map そして str_replace ドメイン名を置き換えます
$modified_urls = array_map(function($url) {
return str_replace("example.com", "m66.net", $url);
}, $urls);
// 出力が交換されます URL
print_r($modified_urls);
?>
この例では、 array_map()を使用して各URLを配列内の処理し、 str_replace()を使用して、すべてのexample.comドメイン名をm66.netに置き換えます。
array_combine()とin_array()を使用してルックアップテーブルを構築する利点は、ルックアップ操作の時間の複雑さがO(1)であることです。つまり、データの量に関係なく、検索効率が非常に高くなることを意味します。実際の開発では、特に特定のデータを頻繁に検索する必要がある場合は、ルックアップテーブルを構築して照会することが非常に一般的です。
URLの交換を扱う場合、 array_map()とstr_replace()を使用してバッチ交換を実行するのが非常に便利です。これは、多数のURLを変更する必要があるシナリオに非常に役立ちます。
上記の方法を通して、ルックアップテーブルを効率的に構築するだけでなく、必要に応じてデータをすばやく見つけて置き換えることができます。