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

다차원 PHP 배열의 키-값 쌍을 기반으로 하위 배열을 효율적으로 찾는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-15 20:39:18
원래의
307명이 탐색했습니다.

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

다차원 PHP 배열의 키-값 쌍을 기반으로 하위 배열 찾기

다차원 배열을 탐색할 때 기반으로 특정 하위 배열을 찾는 것이 어려울 수 있습니다. 키-값 쌍에 대해. 그러나 배열의 깊이에 관계없이 이를 재귀적으로 수행하는 효율적인 방법이 있습니다.

함수 구현:

지정된 조건을 충족하는 하위 배열을 검색하는 함수를 만들어 보겠습니다. :

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

    if (is_array($array)) {
        // Check if the current subarray matches
        if (isset($array[$key]) && $array[$key] == $value) {
            $results[] = $array;
        }

        // Recursively search inner subarrays
        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':

$found = search($arr, 'name', 'cat 1');
print_r($found);
로그인 후 복사

출력:

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

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

)
로그인 후 복사

효율성 고려 사항:

특히 다음과 같은 경우 효율성 향상 대규모 배열을 처리할 경우 배열 병합을 방지하여 기능을 최적화할 수 있습니다. 대신 재귀 호출의 결과를 임시 배열에 저장할 수 있습니다.

function search_optimized($array, $key, $value)
{
    $results = [];
    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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿