首頁 >後端開發 >php教程 >如何在多維PHP數組中高效搜尋鍵值對?

如何在多維PHP數組中高效搜尋鍵值對?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-19 08:29:11825瀏覽

How Can I Efficiently Search for Key-Value Pairs in Multidimensional PHP Arrays?

在多維 PHP 數組中遞歸搜尋鍵值對

在多維數組中搜尋特定鍵值對可能很麻煩。如果數組深度可變,找到快速有效的解決方案至關重要。

遞歸搜尋函數

以下 PHP函數使用遞歸來遞歸遍歷數組,比較給定鍵的值:

function search($array, $key, $value)
{
    $results = array();

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

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

    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”的所有子數組,我們使用:

print_r(search($arr, 'name', 'cat 1'));

輸出:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => cat 1
        )

    [1] => Array
        (
            [id] => 3
            [name] => cat 1
        )

)

效率考慮因素

為了提高效率,特別是對於大型數組,考慮使用透過引用傳遞結果的遞歸函數。透過共用單一臨時 $results 數組,可以顯著提高效能:

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

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

    foreach ($array as $subarray) {
        search_r($subarray, $key, $value, $results);
    }
}

以上是如何在多維PHP數組中高效搜尋鍵值對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn