> 백엔드 개발 > PHP 튜토리얼 > 다차원 PHP 배열에서 키-값 쌍을 효율적으로 검색하는 방법은 무엇입니까?

다차원 PHP 배열에서 키-값 쌍을 효율적으로 검색하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-20 21:26:19
원래의
915명이 탐색했습니다.

How to 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"));
로그인 후 복사

그리고 다음을 검색합니다. key=name 및 value="cat 1"인 경우 함수는 다음을 반환합니다.

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

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

)
로그인 후 복사

효율성을 높이기 위해 대체 구현에서는 별도의 배열을 만드는 대신 재귀 호출의 결과를 단일 $results 배열로 병합합니다.

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);
    }
}
로그인 후 복사

매개변수 목록의 앰퍼샌드 &는 참조별 전달을 나타내므로 모든 재귀 호출이 동일한 $results를 수정하도록 합니다.

이 강력하고 다재다능한 솔루션을 사용하면 개발자는 깊이나 복잡성에 관계없이 다차원 PHP 배열에서 키-값 쌍을 원활하게 검색할 수 있습니다.

위 내용은 다차원 PHP 배열에서 키-값 쌍을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿