首頁 > 後端開發 > php教程 > 如何有效率地找出多維PHP數組中的鍵值對?

如何有效率地找出多維PHP數組中的鍵值對?

DDD
發布: 2024-12-24 14:25:10
原創
514 人瀏覽過

How to Efficiently Find Key-Value Pairs in Multidimensional PHP Arrays?

使用PHP 中的鍵在多維數組中查找值

在多維數組中搜尋特定的鍵值對可能是一項繁瑣的任務,尤其是如果您不知道的話數組的深度。本文介紹了一個高效率的 PHP 函數,它遞歸地遍歷數組,傳回所有符合搜尋條件的子數組。

函數 search() 接受三個參數:要搜尋的陣列、要搜尋的鍵,以及要符合的值。它使用遞歸來探索數組的所有級別,檢查每個級別的鍵值對。

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'));
登入後複製

呼叫search( $arr, 'name', 'cat 1') 將傳回:

array(0 => array('id' => 1, 'name' => 'cat 1'),
      1 => array('id' => 3, 'name' => 'cat 1'));
登入後複製

為了提高效率,最佳化版本函數search_r()可以使用:

function search($array, $key, $value)
{
    $results = array();
    search_r($array, $key, $value, $results);
    return $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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板