현재 위치: > 최신 기사 목록> array_filter ()를 사용할 때 키 이름을 보존하는 메소드

array_filter ()를 사용할 때 키 이름을 보존하는 메소드

M66 2025-06-05

Array_Filter () 는 PHP에서 일반적으로 사용되는 기능 중 하나이며, 배열에서 요소를 필터링하는 데 사용됩니다. 일반적으로 Array_Filter ()는 기준을 충족하는 배열 값 만 반환하고 기본적으로 배열의 키 이름을 기본적으로 재설정합니다. 즉, 0부터 시작하는 연속 정수 키 이름을 유지합니다. 그러나 때로는 배열을 필터링 할 때 원래 키 이름을 유지할 수 있습니다. 이 기사는 Array_Filter ()를 사용할 때 배열의 주요 이름을 보존하는 방법을 설명합니다.

array_filter ()의 기본 사용

키 이름을 보존하는 방법에 대해 논의하기 전에 먼저 Array_Filter () 의 기본 사용법을 살펴 보겠습니다. Array_Filter () 함수는 배열을 반복하고 콜백 함수의 리턴 값에 따라 배열에서 요소를 유지할지 여부를 결정합니다. 콜백 함수가 true를 반환하면 요소가 유지되고 그렇지 않으면 제거됩니다.

 <?php
$array = [1, 2, 3, 4, 5];

$result = array_filter($array, function($value) {
    return $value % 2 === 0;  // 숫자 만 유지됩니다
});

print_r($result);
?>

출력 결과 :

 Array
(
    [1] => 2
    [3] => 4
)

질문 : 배열의 키 이름을 보존하는 방법은 무엇입니까?

위에서 볼 수 있듯이 Array_Filter ()는 배열을 필터링하지만 키 이름을 재설정합니다. 이 예에서는 array_filter () 의 출력 배열 키 이름이 0 에서 시작되며 원래 배열의 키 이름을 유지하려고합니다.

솔루션 : Array_Filter_use_key 매개 변수를 사용하십시오

PHP는 array_filter () 의 세 번째 매개 변수 array_filter_use_key를 사용하여 공통 솔루션을 제공합니다. 이 상수를 사용하면 Array_Filter ()는 값 대신 키 이름을 기반으로 콜백 함수를 실행하므로 필터링시 키 이름을 유지할 수 있습니다.

 <?php
$array = [1 => 10, 2 => 20, 3 => 30, 4 => 40, 5 => 50];

$result = array_filter($array, function($key) {
    return $key % 2 === 0;  // 열쇠도 유지하십시오
}, ARRAY_FILTER_USE_KEY);

print_r($result);
?>

출력 결과 :

 Array
(
    [2] => 20
    [4] => 40
)

이 예에서는 콜백 함수의 매개 변수가 값이 아닌 배열의 키가되도록 array_filter_use_key를 사용합니다. 이런 식으로 원래 키 이름을 유지하면서 키 이름의 조건에 따라 배열을 필터링 할 수 있습니다.

배열 키 이름을 유지하는 실제 예

여러 URL 주소가 포함 된 배열이 있다고 가정하고 M66.net 도메인 이름을 포함하는 주소를 필터링하고 원래 키 이름을 유지하려고합니다.

 <?php
$urls = [
    'a' => 'http://example.com/page1',
    'b' => 'https://m66.net/page2',
    'c' => 'http://m66.net/page3',
    'd' => 'https://example.com/page4',
];

$result = array_filter($urls, function($url) {
    return strpos($url, 'm66.net') !== false;  // 포함을 필터링하십시오 m66.net ~의 URL
});

print_r($result);
?>

출력 결과 :

 Array
(
    [b] => https://m66.net/page2
    [c] => http://m66.net/page3
)

위에서 볼 수 있듯이 Array_Filter ()는 M66.net이 포함 된 URL 주소를 필터링하고 주요 이름 ( BC )을 유지합니다.

요약

Array_Filter () 함수는 매우 강력하며 배열을 필터링하는 데 사용될 수 있지만 기본적으로 배열의 키 이름이 재설정됩니다. 배열의 키 이름을 유지하려면 Array_Filter ()를 사용할 때 Array_Filter_use_Key 상수를 지정하여 콜백 함수가 값이 아니라 배열의 키를 수락하도록합니다.

이러한 방식으로 키 이름 또는 값의 조건에 따라 배열을 유연하게 필터링하고 원래 키 이름을 유지하여 배열의 구조를 그대로 유지할 수 있습니다.