Array_intersect_key 함수는 여러 배열의 키 이름을 비교하고 동일한 키 이름의 요소를 반환하는 데 사용됩니다. 배열의 값을 비교하지는 않지만 키 이름에 따라 일치합니다.
<span><span><span class="hljs-title function_ invoke__">array_intersect_key</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">array</span></span><span> ...</span><span><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ array1 : 다른 배열과 비교하는 데 사용되는 첫 번째 배열.
$ array2 : $ array1 과 비교할 키를 포함하는 두 번째 배열.
추가 배열 (선택 사항) : 다중 비교를 위해 여러 배열을 전달할 수 있습니다.
다른 배열과 동일한 키 이름을 가진 모든 요소를 포함하는 배열을 반환합니다.
<span><span><span class="hljs-variable">$array1</span></span><span> = [
</span><span><span class="hljs-string">'a'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>,
</span><span><span class="hljs-string">'b'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'c'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>
];
</span><span><span class="hljs-variable">$array2</span></span><span> = [
</span><span><span class="hljs-string">'a'</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>,
</span><span><span class="hljs-string">'b'</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>,
</span><span><span class="hljs-string">'d'</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>
];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>);
</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-number">1</span></span><span>
[b] => </span><span><span class="hljs-number">2</span></span><span>
)
</span></span>
이 예에서 Array_Intersect_key는 $ array1 및 $ array2 의 주요 이름을 비교하여 동일한 키 이름의 요소를 반환합니다. 'a' 및 'b' .
Array_intersect_key 와 유사하게 Array_intersect_ukey는 배열의 주요 이름을 기반으로 비교하는 데 사용됩니다. 유일한 차이점은 사용자 정의 콜백 함수를 제공하여 사용자 정의 키 이름 비교를 수행 할 수 있다는 것입니다.
<span><span><span class="hljs-title function_ invoke__">array_intersect_ukey</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><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ array1 : 다른 배열과 비교하는 데 사용되는 첫 번째 배열.
$ array2 : $ array1 과 비교할 키를 포함하는 두 번째 배열.
$ key_compare_func : 키 이름을 비교하기위한 사용자 정의 콜백 함수. 이 함수는 두 개의 키 이름을 매개 변수로 가져 와서 정수 값을 반환합니다. 첫 번째 키가 두 번째 키보다 또는 크지 않은 경우 각각 음수, 0 또는 양수를 반환합니다.
추가 배열 (선택 사항) : 다중 비교를 위해 여러 배열을 전달할 수 있습니다.
사용자 정의 키 이름 비교 기능 조건을 충족하는 모든 요소가 포함 된 배열을 반환합니다.
<span><span><span class="hljs-variable">$array1</span></span><span> = [
</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>,
</span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'cherry'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>
];
</span><span><span class="hljs-variable">$array2</span></span><span> = [
</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>,
</span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>,
</span><span><span class="hljs-string">'date'</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>
];
</span><span><span class="hljs-variable">$key_compare_func</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$key1</span></span></span><span>, </span><span><span class="hljs-variable">$key2</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcasecmp</span></span><span>(</span><span><span class="hljs-variable">$key1</span></span><span>, </span><span><span class="hljs-variable">$key2</span></span><span>); </span><span><span class="hljs-comment">// 비교 사례를 무시하십시오</span></span><span>
};
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_ukey</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>, </span><span><span class="hljs-variable">$key_compare_func</span></span><span>);
</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>
(
[apple] => </span><span><span class="hljs-number">1</span></span><span>
[banana] => </span><span><span class="hljs-number">2</span></span><span>
)
</span></span>
이 예에서는 array_intersect_ukey가 strcasecmp 함수를 사용하여 키 이름을 비교하여 케이스를 무시하므로 'Apple' 및 'Banana'는 동일한 키로 간주됩니다.
특성 | array_intersect_key | array_intersect_ukey |
---|---|---|
비교 방법 | 키 이름을 직접 비교하십시오 | 사용자 정의 콜백 함수를 통해 사용자 정의 키 이름 비교 메소드 허용 |
사용자 정의 비교 | 사용자 정의 비교는 지원되지 않습니다 | 콜백 함수를 통해 사용자 정의 비교 규칙을 지원합니다 |
시나리오를 사용하십시오 | 사례 또는 복잡한 비교 규칙을 고려하지 않고 간단한 키 이름 비교에 적합 | 복잡한 또는 사용자 정의 규칙이 필요한 키 이름 비교에 적합 |
성능 | 간단하고 높은 실행 효율성 | 사용자 콜백 함수가 관련되어 있으므로 성능은 Array_intersect_key 보다 약간 열등 할 수 있습니다. |
Array_intersect_key는 키 이름의 사용자 지정 비교를 포함하지 않고 여러 배열에서 키 이름을 비교하는 데 적합한 비교적 간단하고 효율적인 기능입니다.
Array_intersect_ukey를 사용하면 개발자가 사용자 정의 키 이름 비교 함수를 제공 할 수 있으므로 복잡한 키 이름 비교가 필요한 시나리오에보다 유연하고 적합하지만 성능에도 영향을 줄 수 있습니다.
특정 응용 프로그램 요구 사항에 따라 키 이름 비교를 처리하는 적절한 기능을 선택할 수 있습니다. 직접 키 이름 일치 만 필요하면 Array_intersect_key 가 충분합니다. 보다 복잡한 키 이름 비교 로직이 필요한 경우 array_intersect_ukey는 보다 강력한 기능을 제공합니다.