현재 위치: > 최신 기사 목록> Array_Filter () + Array_Map ()는 복잡한 배열 변환 및 필터링을 구현합니다

Array_Filter () + Array_Map ()는 복잡한 배열 변환 및 필터링을 구현합니다

M66 2025-06-04

php에서 array_filter ()array_map () 은 매우 강력하고 일반적으로 사용되는 배열 처리 기능입니다. 전자는 배열에서 요소를 필터링하는 데 사용되는 반면, 후자는 배열에서 각 요소를 변환하는 데 사용됩니다. 그것들만으로는 많은 문제를 해결할 수 있지만 두 가지를 함께 사용하면 중첩 어레이, 객체 배열 또는 여러 처리 단계가 필요한 비즈니스 로직과 같은 복잡한 구조에서 데이터를보다 효율적으로 처리 할 수 ​​있습니다.

이 기사는 실용적인 예제를 사용하여 array_filter ()array_map ()을 영리하게 결합하여 복잡한 배열의 필터링 및 변환을 구현하는 방법을 보여줍니다.

1. 장면 소개

사용자가 다양한 사용자가 있다고 가정하고 각 사용자는 이름, 연령, 이메일 주소, 상태 등과 같은 정보가 포함되어 있다고 가정합니다. 우리의 목표는 다음과 같습니다.

  • 상태 "활성"상태가있는 사용자 만 유지됩니다.

  • 각 사용자의 이름을 자본으로 변환합니다.

  • 두 필드 만 출력 : 이름과 사서함;

원본 배열 예제는 다음과 같습니다.

 $users = [
    ['name' => 'Alice', 'age' => 25, 'email' => 'alice@m66.net', 'status' => 'active'],
    ['name' => 'Bob', 'age' => 30, 'email' => 'bob@m66.net', 'status' => 'inactive'],
    ['name' => 'Charlie', 'age' => 22, 'email' => 'charlie@m66.net', 'status' => 'active'],
];

2. Array_Filter ()를 사용하여 필터링하십시오

먼저 Array_Filter ()를 사용하여 사용자가 활성 상태로 사용자를 필터링하겠습니다.

 $activeUsers = array_filter($users, function($user) {
    return $user['status'] === 'active';
});

이 단계가 실행 된 후 $ ActiveUsers 에는 Alice와 Charlie 만 포함됩니다.

3. Array_Map ()을 사용하여 변환하십시오

다음으로, 우리는 Array_Map () 로 이름을 대문자로하고 (이름과 이메일) 우리가 관심있는 필드 만 유지합니다.

 $transformedUsers = array_map(function($user) {
    return [
        'name' => strtoupper($user['name']),
        'email' => $user['email']
    ];
}, $activeUsers);

출력 결과 :

 [
    ['name' => 'ALICE', 'email' => 'alice@m66.net'],
    ['name' => 'CHARLIE', 'email' => 'charlie@m66.net']
]

4. 체인 가공 기술 (선택 사항)

코드가 더 간결하게되기를 원한다면 두 기능을 징수 할 수 있습니다. Array_Filter () 자체는 키 리셋의 배열을 반환하지 않지만 Array_Values ​​() 에서 더 잘 작동합니다.

 $processedUsers = array_map(function($user) {
    return [
        'name' => strtoupper($user['name']),
        'email' => $user['email']
    ];
}, array_values(array_filter($users, function($user) {
    return $user['status'] === 'active';
})));

5. 요약

Array_Filter ()Array_Map () 을 결합하면 복잡한 배열을 처리하는 데 매우 유연 해져서 "필터 먼저, 변환"의 논리적 분리를 달성 할 수 있습니다. 이 방법은 API 데이터 리턴 처리, 양식 데이터 전처리 및 비즈니스 데이터 흐름과 같은 시나리오에서 사용하기에 매우 적합합니다.

또한 연관 배열을 다루거나 키 이름을 보존 해야하는 경우 Array_Keys () , Array_Values ​​()를 사용하거나 Laravel의 컬렉션 클래스와 같은 고급 기능 라이브러리를 사용하여 가독성 및 기능을 향상시킬 수 있습니다.