본문 바로가기
PROGRAMMING/PHP

PHP array_reduce() 콜백 함수 배열 값 합치기

by itengineer 2023. 7. 6.
반응형

array_reduce() 함수는 PHP에서 사용되는 배열을 하나의 값으로 줄이는(reduce) 함수입니다. 이 함수는 배열의 모든 요소를 반복하면서 지정된 콜백 함수를 적용하여 하나의 결과 값을 생성합니다.

다음은 array_reduce() 함수의 구문입니다.



array_reduce(array $array, callable $callback [, mixed $initial = null ]) : mixed



- $array: 값을 줄일 배열입니다.
- $callback: 배열의 요소에 적용될 콜백 함수입니다. 이 함수는 누적 값을 반환해야 하며, 다음 반복에서 새로운 누적 값을 계산하는 데 사용됩니다.
- $initial (옵션): 초기 누적 값으로 사용될 값입니다. 기본값은 null이며, 이 경우 배열의 첫 번째 요소가 초기 누적 값으로 사용됩니다.

다음은 array_reduce() 함수를 사용하여 배열의 값을 누적하는 예입니다.

$numbers = array(1, 2, 3, 4, 5);
$sum = array_reduce($numbers, function ($carry, $value) {
    return $carry + $value;
});

echo $sum;
// 출력
15


위의 예제에서는 $numbers 배열의 모든 요소를 합하여 $sum 변수에 저장합니다. 콜백 함수는 누적 값을 $carry로 받고, 각 요소의 값을 $value로 받아 이 둘을 더하여 다음 반복에 사용할 새로운 누적 값을 반환합니다. array_reduce() 함수는 배열의 모든 요소를 반복하고 최종적으로 누적된 값을 반환합니다.

array_reduce() 함수를 사용하여 배열을 줄일 때, 초기 누적 값을 지정할 수도 있습니다. 다음은 초기 누적 값을 사용하여 배열의 요소를 누적하는 예입니다.

 

$numbers = array(1, 2, 3, 4, 5);
$product = array_reduce($numbers, function ($carry, $value) {
    return $carry * $value;
}, 1);

echo $product;
// 출력
120



위의 예제에서는 $numbers 배열의 모든 요소를 곱하여 $product 변수에 저장합니다. array_reduce() 함수의 세 번째 인수로 초기 누적 값을 1로 지정하였으므로, 첫 번째 반복에서는 1과 첫 번째 요소를 곱한 값이 초기 누적 값이 됩니다. 그 후의 반복에서는 이전의 누적 값과 현재 요소를 곱하여 새로운 누적 값을 반환합니다.

array_reduce() 함수를 사용하면 배열을 하나의 값으로 줄일 수 있습니다. 콜백 함수를 통해 누적 값을 계산하고 초기 누적 값을 지정할 수 있습니다.

 

다음은 array_reduce() 함수를 사용한 몇 가지 예입니다.

  • 배열 합산: 배열의 숫자 요소를 합산하여 총합을 계산할 때 array_reduce() 함수를 사용할 수 있습니다. 예를 들어, 주문 목록의 가격을 합산하거나 점수 배열의 합계를 계산할 수 있습니다.
$prices = [10.5, 20.75, 15.99];

// 배열의 모든 요소를 합산하여 총합 계산
$totalPrice = array_reduce($prices, function ($carry, $price) {
    return $carry + $price;
}, 0);
// $totalPrice = 47.24

$scores = [85, 92, 78, 90];

// 배열의 모든 요소를 합산하여 총합 계산
$totalScore = array_reduce($scores, function ($carry, $score) {
    return $carry + $score;
}, 0);
// $totalScore = 345

  • 문자열 결합: 배열의 문자열 요소를 결합하여 하나의 문자열로 만들 때 array_reduce() 함수를 사용할 수 있습니다. 예를 들어, 태그 배열을 하나의 HTML 태그 문자열로 결합할 수 있습니다.
$tags = ["php", "web", "development"];

// 배열의 모든 요소를 결합하여 태그 문자열 생성
$tagString = array_reduce($tags, function ($carry, $tag) {
    return $carry . '<' . $tag . '>';
}, '');
// $tagString = "<php><web><development>"

  • 최대값 또는 최솟값 찾기: 배열에서 최대값 또는 최솟값을 찾을 때 array_reduce() 함수를 사용할 수 있습니다. 예를 들어, 주어진 숫자 배열에서 최대값을 찾는 것이나 문자열 배열에서 가장 긴 단어를 찾을 수 있습니다.
$numbers = [10, 5, 8, 12, 3];

// 배열에서 최대값 찾기
$maxNumber = array_reduce($numbers, function ($carry, $number) {
    return max($carry, $number);
});
// $maxNumber = 12

$words = ["apple", "banana", "orange", "pear"];

// 배열에서 가장 긴 단어 찾기
$longestWord = array_reduce($words, function ($carry, $word) {
    return strlen($carry) > strlen($word) ? $carry : $word;
});
// $longestWord = "banana"




이러한 예는 array_reduce() 함수의 일부 활용 방법을 보여줍니다. 실제로 array_reduce() 함수는 배열의 요소를 결합하여 단일 값으로 줄이거나 배열에서 특정 정보를 추출하는 데 활용될 수 있으며, 다양한 데이터 처리 및 집계 작업에 유용합니다.

반응형

댓글