ホームページ > バックエンド開発 > PHPチュートリアル > PHP の多次元配列でキーと値のペアを効率的に検索するにはどうすればよいですか?

PHP の多次元配列でキーと値のペアを効率的に検索するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-28 15:47:33
オリジナル
189 人が閲覧しました

How to Efficiently Search for Key-Value Pairs in PHP's Multidimensional Arrays?

PHP での多次元配列内のキーと値のペアの検索

概要:

検索多次元配列内のキーと値の一致に基づく特定のサブ配列は、特に配列の深さは不明です。この記事では、この検索操作を効率的に実行するための再帰的アプローチについて説明します。

関数定義:

function search($array, $key, $value)
{
    // Initialize an empty results array
    $results = array();

    // Check if the current element is an array
    if (is_array($array)) {
        // If the current element matches the key-value pair, add it to the results
        if (isset($array[$key]) && $array[$key] == $value) {
            $results[] = $array;
        }

        // Recursively search through each subarray
        foreach ($array as $subarray) {
            $results = array_merge($results, search($subarray, $key, $value));
        }
    }

    // Return the accumulated results
    return $results;
}
ログイン後にコピー

例:

次の多次元配列を考えてみましょう:

$arr = array(
    0 => array('id' => 1, 'name' => "cat 1"),
    1 => array('id' => 2, 'name' => "cat 2"),
    2 => array('id' => 3, 'name' => "cat 1")
);
ログイン後にコピー

を検索するときキーと値のペア 'name' => 'cat 1' の場合、関数は次を返します:

array(
    0 => array('id' => 1, 'name' => "cat 1"),
    1 => array('id' => 3, 'name' => "cat 1")
);
ログイン後にコピー

パフォーマンスに関する考慮事項:

効率が最優先されるシナリオでは、別のアプローチが利用可能です:

function searchOptimized($array, $key, $value)
{
    $results = array();
    searchOptimized_r($array, $key, $value, $results);
    return $results;
}

function searchOptimized_r($array, $key, $value, &$results)
{
    if (!is_array($array)) {
        return;
    }

    if (isset($array[$key]) && $array[$key] == $value) {
        $results[] = $array;
    }

    foreach ($array as $subarray) {
        searchOptimized_r($subarray, $key, $value, $results);
    }
}
ログイン後にコピー

この最適化されたバージョンでは、検索結果は一時的な $results 配列に直接蓄積されるため、配列のマージが必要です。 searchOptimized_r の呼び出しで参照渡しを指定することにより、このバージョンは古い PHP バージョンとの互換性を維持しながら高いパフォーマンスを維持します。

以上がPHP の多次元配列でキーと値のペアを効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート