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 : 키를 비교하는 데 사용되는 콜백 함수.
이 함수는 키와 값이 동일 할 때 두 배열의 교차로 결과를 반환합니다. 여러 배열의 교차점이 필요한 경우 더 많은 배열 매개 변수를 제공 할 수 있습니다.
학생 정보가 포함 된 다음 중첩 배열이 있다고 가정하고 각 학생은 ID , 이름 및 점수 와 같은 필드를 가지고 있다고 가정합니다. 특정 조건에 따라 요구 사항을 충족하는 학생들을 필터링하려고합니다.
<span><span><span class="hljs-variable">$students</span></span><span> = [
</span><span><span class="hljs-string">'a'</span></span><span> => [</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Tom'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>],
</span><span><span class="hljs-string">'b'</span></span><span> => [</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Jerry'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">90</span></span><span>],
</span><span><span class="hljs-string">'c'</span></span><span> => [</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Anna'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">78</span></span><span>],
</span><span><span class="hljs-string">'d'</span></span><span> => [</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Lucy'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">92</span></span><span>]
];
</span></span>80보다 큰 점수를 가진 학생들을 필터링하려면 Array_Intersect_uassoc을 통해 배열의 키와 값을 비교해야하며 조건부 필터링을 구현하려면 사용자 정의 키 값 비교 기능을 사용해야합니다.
우리는 비교 함수를 작성하여 학생의 점수가 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>] > </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>다음으로, 우리는 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 함수를 기반으로 배열의 특정 요소를 필터링하려고합니다. 이 기능은 학생의 점수 필드에 따라 각 요소를 필터링합니다.
필터링 된 결과에는 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] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[id] => </span><span><span class="hljs-number">1</span></span><span>
[name] => Tom
[score] => </span><span><span class="hljs-number">85</span></span><span>
)
[b] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[id] => </span><span><span class="hljs-number">2</span></span><span>
[name] => Jerry
[score] => </span><span><span class="hljs-number">90</span></span><span>
)
[d] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[id] => </span><span><span class="hljs-number">4</span></span><span>
[name] => Lucy
[score] => </span><span><span class="hljs-number">92</span></span><span>
)
)
</span></span>알 수 있듯이 80 점 이상의 점수를 가진 학생 만 선별되었습니다.