현재 위치: > 최신 기사 목록> array_filter 및 array_map 팁

array_filter 및 array_map 팁

gitbox 2025-05-28

PHP에서 Array_FilterArray_Map 은 매우 일반적으로 사용되는 강력한 배열 처리 기능입니다. 혼자 사용하면 자신의 용도를 가지고 있지만 결합하면 코드의 단순성과 효율성을 크게 향상시킬 수 있습니다. 이 기사는이 두 기능의 사용법을 자세히 소개하고 조합에 대한 실용적인 팁과 모범 사례를 공유합니다.


1. Array_Filter 및 Array_Map을 이해하십시오

  • Array_Filter
    이 기능은 배열 요소를 필터링하는 데 사용됩니다. 콜백 함수는 각 요소가 조건을 충족하는지 여부를 결정하고 조건을 충족하는 모든 요소로 구성된 새 배열을 반환합니다.

     $filtered = array_filter($array, function($item) {
        return $item > 10; // 필터는보다 큽니다10강요
    });
    
  • Array_map
    이 기능은 배열의 각 요소에서 동일한 콜백 작동을 수행하여 처리 된 새 배열을 반환하는 데 사용됩니다.

     $mapped = array_map(function($item) {
        return $item * 2; // 각 요소에 곱하십시오2
    }, $array);
    

2. 왜 결합하여 사용합니까?

  • 필터링 후 맵 : 먼저 Array_Filter를 사용하여 조건을 충족하는 요소를 필터링 한 다음 Array_Map을 사용하여 이러한 요소를 균일하게 처리하십시오.

  • 매핑 후 필터 : 먼저 Array_Map을 사용하여 배열 요소 형식을 변환 한 다음 Array_Filter를 사용하여 요구 사항을 충족하는 결과를 필터링하십시오.

  • 일회성 체인 작동 : 간결하고 직관적 인 체인 코드를 작성하여 긴 루프를 쓰는 것을 피하십시오.


3. 실용적인 팁과 예

팁 1 : 먼저 필터를 필터하고 매핑하여 매핑 함수가 조건을 충족하는 요소 만 처리하는지 확인합니다.

 <?php
$numbers = [1, 5, 12, 18, 7, 25];

// 더 큰 것을 필터링하십시오10숫자
$filtered = array_filter($numbers, function($num) {
    return $num > 10;
});

// 再对过滤后숫자做平方操作
$squared = array_map(function($num) {
    return $num * $num;
}, $filtered);

print_r($squared);
?>

산출:

 Array
(
    [2] => 144
    [3] => 324
    [5] => 625
)

이 예에서 먼저 Array_Filter를 사용하여 Array_Map이 쓸모없는 작업을 수행하지 않도록 조건을 충족하지 않는 요소를 제거하십시오.


팁 2 : 체인 호출,보다 간결한 코드를 작성하십시오

PHP 7.4+는 화살표 기능을 지원하며 체인 호출과 함께 더 간결합니다.

 <?php
$numbers = [1, 5, 12, 18, 7, 25];

$result = array_map(
    fn($num) => $num * $num,
    array_filter($numbers, fn($num) => $num > 10)
);

print_r($result);
?>

팁 3 : 맵핑 후 필터, 먼저 데이터 형식을 변환 한 다음 형식과 일치하는 요소를 필터링합니다.

 <?php
$urls = [
    'http://example.com',
    'ftp://fileserver.com',
    'https://secure.com',
];

// 먼저 소문자 프로토콜로 변환하십시오
$lowercased = array_map(fn($url) => strtolower($url), $urls);

// 다시 필터링하십시오http계약의 시작URL
$httpUrls = array_filter($lowercased, fn($url) => str_starts_with($url, 'http'));

print_r($httpUrls);
?>

팁 4 : 키 이름으로 필터

array_filter array_filter_use_key 의 두 번째 매개 변수는 키 이름에 따라 필터링 한 다음 array_map 과 함께 값을 처리 할 수 ​​있습니다.

 <?php
$data = [
    'name' => 'Alice',
    'age' => 25,
    'email' => '[email protected]',
    'score' => 92,
];

// 필터는 키 이름 만 문자열로 유지하고 길이는3강요
$filtered = array_filter($data, fn($key) => strlen($key) > 3, ARRAY_FILTER_USE_KEY);

// 값을 문자열 형식으로 변환합니다
$mapped = array_map(fn($value) => (string)$value, $filtered);

print_r($mapped);
?>

4. 요약

  • 먼저 필터링 한 다음 맵핑하여 불필요한 처리를 줄입니다.

  • 먼저 맵핑 한 다음 필터링하면 쉽게 필터링하기 위해 데이터 형식 또는 구조를 먼저 통합 할 수 있습니다.

  • 화살표 기능과 체인 호출을 사용하여 클리너 코드를 작성하십시오.

  • 키 이름을 필터링하기 위해 array_filter_use_key 와 결합합니다.

  • 조합 사용은 코드 로직을 명확하게하고 복잡한 루프를 피하며 코드 재사용 성과 가독성을 향상시킵니다.

이 두 기능의 조합 및 사용 기술을 마스터하면 매일 PHP 개발에서 배열을 처리하고 효율적이고 우아한 코드를 작성하는 데 더욱 편리 할 수 ​​있습니다.


 <?php
// 포괄적 인 예:빈 값을 필터링하십시오,문자열을 대문자로 변환합니다,반환 결과
$data = ['apple', '', 'Banana', null, 'Cherry'];

$result = array_map(
    fn($item) => strtoupper($item),
    array_filter($data, fn($item) => !empty($item))
);

print_r($result);
?>