현재 위치: > 최신 기사 목록> array_filter와 array_reduce와 장면 선택의 차이

array_filter와 array_reduce와 장면 선택의 차이

gitbox 2025-05-29

PHP에서 Array_FilterArray_Reduce 는 처리 배열을위한 강력한 기능이지만 용도와 작동 방식이 크게 다릅니다. 이 두 기능 사이의 차이점과 사용 시나리오를 이해하면보다 간결하고 효율적인 코드를 작성하는 데 도움이됩니다.


1. Array_Filter의 역할

Array_Filter는 배열 요소를 필터링하는 데 사용됩니다. 콜백 함수를 통해 각 요소를 확인합니다. RETURN 이있는 요소가 유지되고 Return False가 있는 요소가 제거됩니다. 간단히 말해서 조건에 따라 요구 사항을 충족하는 배열 요소를 필터링하는 것입니다.

코드 예제

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

// 모든 짝수 숫자를 필터링하십시오
$result = array_filter($arr, function($value) {
    return $value % 2 === 0;
});

print_r($result);
?>

출력 결과 :

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

참고 : Array_Filter는 요소의 키 이름을 변경하지 않습니다.


2. array_reduce의 역할

Array_reduce는 배열을 단일 값으로 줄이는 데 사용됩니다. 콜백 함수를 통해 배열 요소를 누적 값으로 병합하는데, 이는 축적, 합산 및 접합 문자열과 같은 작업에 적합합니다.

코드 예제

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

// 배열의 모든 요소의 합을 계산하십시오
$sum = array_reduce($arr, function($carry, $item) {
    return $carry + $item;
}, 0);

echo $sum;
?>

출력 결과 :

 15

$ Carry는 누적 값이며, 콜백은 계속 업데이트되며 최종 반환은 감소 결과입니다.


3. 둘 사이의 필수 차이

특징 Array_Filter array_reduce
효과 배열을 필터링하고 기준을 충족하는 서브 세트를 반환합니다. 배열을 단일 값으로 "감소"하십시오
반환 값 배열 스칼라 또는 물체
주요 용도 조건부 필터 요소 집계, 병합, 축적
예약 된 키 이름 예약하다 주요 이름이 관여하지 않으며 값 축적에 관한 것입니다.

4. 장면에 따라 사용하는 방법?

  • 배열에서 기준을 충족하는 요소를 필터링 해야하는 경우 Array_Filter를 사용하십시오. 예를 들어, 18 세 이상의 모든 사용자를 필터링합니다.

  • 배열을 값으로 변환 해야하는 경우 array_reduce를 사용하십시오. 예를 들어, 총 점수, 스플 라이스 스트링을 계산하고 통계 데이터를 생성합니다.


5. 예와 결합

여러 주문 금액을 포함하는 주문 배열이 있다고 가정합니다.

 <?php
$orders = [120, 250, 90, 300, 60];

// 필터링 된 양은보다 큽니다100명령
$filteredOrders = array_filter($orders, function($amount) {
    return $amount > 100;
});

// 计算筛选后명령总金额
$total = array_reduce($filteredOrders, function($carry, $amount) {
    return $carry + $amount;
}, 0);

echo "더 큽니다100명령总金额是:" . $total;
?>

위의 예를 통해 Array_Filter가 먼저 조건을 충족하는 순서를 필터링 한 다음 Array_ReDuce를 사용하여 합계를 필터링한다는 것을 명확하게 알 수 있습니다. 둘 다 함께 사용되면 배열 데이터를 유연하게 처리 할 수 ​​있습니다.


요약

  • Array_Filter는 필터링 요소 , 기준을 충족하는 배열 항목을 유지하는 데 중점을 둡니다.

  • Array_reduce는 배열을 결과로 "압축"하는 감소 병합 에 중점을 둡니다.

  • 귀하의 요구에 따라 선택하거나 사용하여 코드를보다 우아하고 효율적으로 만들 수 있습니다.