PHP에서 array_filter () 및 array_reduce () 함수는 각각 배열을 필터링하고 집계하는 데 사용되는 매우 유용한 도구입니다. 개발자가 코드를 단순화하고 코드 가독성 및 효율성을 향상시키는 데 도움이 될 수 있습니다. 이 기사는 예제를 사용하여 데이터 필터링 및 집계 에이 두 기능을 사용하는 방법을 보여줍니다.
Array_Filter () 함수는 배열에서 요소를 필터링하는 데 사용됩니다. 배열과 콜백 함수를 매개 변수로 수신합니다. 콜백 함수는 배열의 각 요소를 판단합니다. 콜백 함수가 true를 반환하면 요소는 결과 배열에 남아 있습니다. false 가 반환되면 요소가 필터링됩니다.
array_filter(array $array, callable $callback = null, int $mode = 0): array
$ 배열 : 필터링 해야하는 배열.
$ 콜백 : 콜백 함수. 함수가 true를 반환하면 요소가 유지됩니다. False가 반환되면 요소가 제거됩니다. 콜백 함수가 전달되지 않으면 배열의 모든 잘못된 값 (예 : null , false , 0 , ' 등)이 제거됩니다.
$ 모드 : 선택 사항, 배열을 반환 할 인덱스 메소드를 지정합니다. 기본값은 0 입니다. 즉, 원래 인덱스가 유지됩니다.
10보다 큰 모든 숫자를 걸러 내고 싶은 숫자 배열이 있다고 가정 해 봅시다.
<?php
$array = [1, 5, 8, 12, 15, 2];
$result = array_filter($array, function($value) {
return $value > 10;
});
print_r($result);
?>
산출:
Array
(
[3] => 12
[4] => 15
)
위의 코드에서는 array_filter () 함수를 사용하여 10보다 큰 숫자를 걸러냅니다. 볼 수 있듯이 반환 된 배열에는 기준을 충족하는 요소 만 포함됩니다.
array_reduce () 함수는 배열을 단일 값으로 단순화하는 데 사용됩니다. 콜백 함수를 통해 배열의 각 요소에서 작동하고 결과를 단일 리턴 값으로 집계합니다. 일반적인 응용 시나리오에는 합산, 평균 값 계산, 스 플라이 싱 문자열 등이 포함됩니다.
array_reduce(array $array, callable $callback, $initial = null): mixed
$ 배열 : 집계 해야하는 배열.
$ 콜백 : 콜백 함수는 두 개의 매개 변수를 수신합니다 : 누적 된 값과 현재 배열 요소의 값. 콜백 함수의 반환 값은 다음 반복의 누적 값으로 사용됩니다.
$ 초기 : 선택 사항, 초기 값, 기본값은 NULL 입니다.
숫자가 포함 된 배열이 있으며 배열의 모든 요소의 합을 계산하려고합니다.
<?php
$array = [1, 5, 8, 12, 15, 2];
$sum = array_reduce($array, function($carry, $value) {
return $carry + $value;
}, 0);
echo $sum;
?>
산출:
43
위의 코드에서 array_reduce () 함수는 배열의 각 요소를 순서대로 추가하고 마지막으로 배열의 합을 반환합니다. 여기서 $ carry는 누적 된 값을 나타내고 $ 값은 현재 배열 요소의 값을 나타냅니다.
Array_Filter () 및 array_reduce ()를 사용하여 배열 데이터를 필터링하고 집계 할 수 있습니다. 여러 제품 가격 배열이 있고 가격이 10보다 큰 제품을 걸러 내고 합계를 계산하고 싶다고 가정 해 봅시다.
<?php
$products = [
['name' => 'Product 1', 'price' => 5],
['name' => 'Product 2', 'price' => 15],
['name' => 'Product 3', 'price' => 8],
['name' => 'Product 4', 'price' => 20],
];
// 사용 array_filter 필터 아웃 가격은보다 큽니다10제품
$filteredProducts = array_filter($products, function($product) {
return $product['price'] > 10;
});
// 사용 array_reduce 필터링 후 제품의 총 가격을 계산하십시오
$totalPrice = array_reduce($filteredProducts, function($carry, $product) {
return $carry + $product['price'];
}, 0);
echo "Total Price: " . $totalPrice;
?>
산출:
Total Price: 35
이 예에서는 먼저 Array_Filter ()를 사용하여 10보다 큰 가격으로 제품을 필터링 한 다음 Array_Reeduce ()를 사용하여 필터링 된 제품 가격의 합을 계산합니다.
일부 URL이 포함 된 배열이 있고 도메인 이름을 M66.net 으로 바꿔야한다고 가정하면 Array_Map () 및 일반 표현식을 사용하여이를 수행 할 수 있습니다.
<?php
$urls = [
'http://example.com/page1',
'https://www.example.com/page2',
'http://example.com/page3'
];
$updatedUrls = array_map(function($url) {
return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);
print_r($updatedUrls);
?>
산출: