현재 위치: > 최신 기사 목록> wountersect_uassoc을 사용하여 중첩 어레이에서 특정 키 값 쌍을 필터링하는 방법은 무엇입니까?

wountersect_uassoc을 사용하여 중첩 어레이에서 특정 키 값 쌍을 필터링하는 방법은 무엇입니까?

gitbox 2025-07-26

1. Array_Intersect_uassoc 의 함수 서명을 이해하십시오

array_intersect_uassoc 의 기본 함수 서명은 다음과 같습니다.

 <span><span><span class="hljs-title function_ invoke__">array_intersect_uassoc</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array2</span></span><span>, </span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$key_compare_func</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
  • $ array1, $ array2 : 비교할 배열.

  • $ key_compare_func : 키를 비교하는 데 사용되는 콜백 함수.

이 함수는 키와 값이 동일 할 때 두 배열의 교차로 결과를 반환합니다. 여러 배열의 교차점이 필요한 경우 더 많은 배열 매개 변수를 제공 할 수 있습니다.

2. 사용 사례 : 중첩 어레이의 필터 특정 키 값 쌍

학생 정보가 포함 된 다음 중첩 배열이 있다고 가정하고 각 학생은 ID , 이름점수 와 같은 필드를 가지고 있다고 가정합니다. 특정 조건에 따라 요구 사항을 충족하는 학생들을 필터링하려고합니다.

 <span><span><span class="hljs-variable">$students</span></span><span> = [
    </span><span><span class="hljs-string">'a'</span></span><span> =&gt; [</span><span><span class="hljs-string">'id'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Tom'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">85</span></span><span>],
    </span><span><span class="hljs-string">'b'</span></span><span> =&gt; [</span><span><span class="hljs-string">'id'</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Jerry'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">90</span></span><span>],
    </span><span><span class="hljs-string">'c'</span></span><span> =&gt; [</span><span><span class="hljs-string">'id'</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Anna'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">78</span></span><span>],
    </span><span><span class="hljs-string">'d'</span></span><span> =&gt; [</span><span><span class="hljs-string">'id'</span></span><span> =&gt; </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Lucy'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">92</span></span><span>]
];
</span></span>

80보다 큰 점수를 가진 학생들을 필터링하려면 Array_Intersect_uassoc을 통해 배열의 키와 값을 비교해야하며 조건부 필터링을 구현하려면 사용자 정의 키 값 비교 기능을 사용해야합니다.

3. 사용자 정의 비교 함수

우리는 비교 함수를 작성하여 학생의 점수가 80보다 큰지 여부를 결정합니다.이 기능은 키와 값이라는 두 가지 매개 변수를 받게됩니다. array_intersect_uassoc 에 의해 점수 값에 따라 필터링됩니다.

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">compare_scores</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$key1</span></span></span><span>, </span><span><span class="hljs-variable">$val1</span></span><span>, </span><span><span class="hljs-variable">$key2</span></span><span>, </span><span><span class="hljs-variable">$val2</span></span><span>) {
    </span><span><span class="hljs-comment">// 학생 점수 만 기준으로 비교</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$val1</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>] &gt; </span><span><span class="hljs-number">80</span></span><span> ? </span><span><span class="hljs-number">0</span></span><span> : </span><span><span class="hljs-number">1</span></span><span>;
}
</span></span>

4. 필터링을 위해 array_intersect_uassoc을 사용하십시오

다음으로, 우리는 array_intersect_uassoc을 사용하여 기준을 충족하는 학생들의 배열을 필터링합니다.

 <span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_uassoc</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>, </span><span><span class="hljs-variable">$students</span></span><span>, </span><span><span class="hljs-string">'compare_scores'</span></span><span>);
</span></span>

위의 코드에서는 $ 학생 배열을 첫 번째 및 두 번째 매개 변수로 사용합니다. 사용자 정의 Compare_Scores 함수를 기반으로 배열의 특정 요소를 필터링하려고합니다. 이 기능은 학생의 점수 필드에 따라 각 요소를 필터링합니다.

5. 출력 결과

필터링 된 결과에는 80보다 큰 학생들에 대한 정보가 포함됩니다.

 <span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

출력은 다음과 같습니다.

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [a] =&gt; </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
        (
            [id] =&gt; </span><span><span class="hljs-number">1</span></span><span>
            [name] =&gt; Tom
            [score] =&gt; </span><span><span class="hljs-number">85</span></span><span>
        )
    [b] =&gt; </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
        (
            [id] =&gt; </span><span><span class="hljs-number">2</span></span><span>
            [name] =&gt; Jerry
            [score] =&gt; </span><span><span class="hljs-number">90</span></span><span>
        )
    [d] =&gt; </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
        (
            [id] =&gt; </span><span><span class="hljs-number">4</span></span><span>
            [name] =&gt; Lucy
            [score] =&gt; </span><span><span class="hljs-number">92</span></span><span>
        )
)
</span></span>

알 수 있듯이 80 점 이상의 점수를 가진 학생 만 선별되었습니다.