PHP에서 Array_Filter 및 Array_Reduce 는 처리 배열을위한 강력한 기능이지만 용도와 작동 방식이 크게 다릅니다. 이 두 기능 사이의 차이점과 사용 시나리오를 이해하면보다 간결하고 효율적인 코드를 작성하는 데 도움이됩니다.
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는 요소의 키 이름을 변경하지 않습니다.
Array_reduce는 배열을 단일 값으로 줄이는 데 사용됩니다. 콜백 함수를 통해 배열 요소를 누적 값으로 병합하는데, 이는 축적, 합산 및 접합 문자열과 같은 작업에 적합합니다.
<?php
$arr = [1, 2, 3, 4, 5];
// 배열의 모든 요소의 합을 계산하십시오
$sum = array_reduce($arr, function($carry, $item) {
return $carry + $item;
}, 0);
echo $sum;
?>
출력 결과 :
15
$ Carry는 누적 값이며, 콜백은 계속 업데이트되며 최종 반환은 감소 결과입니다.
특징 | Array_Filter | array_reduce |
---|---|---|
효과 | 배열을 필터링하고 기준을 충족하는 서브 세트를 반환합니다. | 배열을 단일 값으로 "감소"하십시오 |
반환 값 | 배열 | 스칼라 또는 물체 |
주요 용도 | 조건부 필터 요소 | 집계, 병합, 축적 |
예약 된 키 이름 | 예약하다 | 주요 이름이 관여하지 않으며 값 축적에 관한 것입니다. |
배열에서 기준을 충족하는 요소를 필터링 해야하는 경우 Array_Filter를 사용하십시오. 예를 들어, 18 세 이상의 모든 사용자를 필터링합니다.
배열을 값으로 변환 해야하는 경우 array_reduce를 사용하십시오. 예를 들어, 총 점수, 스플 라이스 스트링을 계산하고 통계 데이터를 생성합니다.
여러 주문 금액을 포함하는 주문 배열이 있다고 가정합니다.
<?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는 배열을 결과로 "압축"하는 감소 병합 에 중점을 둡니다.
귀하의 요구에 따라 선택하거나 사용하여 코드를보다 우아하고 효율적으로 만들 수 있습니다.