array_reduce()
함수
array_reduce()
함수는
배열의 모든 요소에 콜백 함수를 적용하여 하나의 결과 값을 생성하는 함수입니다.
배열의 요소들을 하나로 줄여(reduce) 집계한 값을 반환합니다.
array_reduce()
함수의 형식은 다음과 같습니다.
구문
매개변수
$array |
array_reduce() 함수에 적용할 배열입니다. |
---|---|
$callback |
배열의 각 요소를 처리하는 콜백 함수입니다.
콜백 함수의 매개변수: $callback($carry, $item)
|
$initial |
옵션. 초기 누적 값입니다.
이 매개변수를 생략하면 첫 번째 배열 요소가 초기 누적 값으로 사용됩니다. |
반환 값
결과 값을 반환합니다.
배열이 비어 있고 $initial
이 전달되지 않으면 null
을 반환합니다.
콜백 함수의 작동 원리
array_reduce()
함수의 매개변수로 전달되는 콜백 함수는 배열의 요소를 처리하고 하나의 결과 값을 생성하는 핵심 역할을 합니다. 이 콜백 함수는 반복(iteration)이 진행됨에 따라 호출되며, 이전 반복의 결과 값을 $carry
변수에 보관하고 현재 요소의 값을 $item
변수에 제공합니다. 아래는 콜백 함수의 작동 원리를 자세히 설명한 것입니다.
- 첫 번째 반복(iteration):
array_reduce()
함수가 호출되면 먼저 초깃값($initial
)과 배열의 첫 번째 요소가 콜백 함수로 전달됩니다.$carry
: 초깃값($initial
)의 값이$carry
변수에 할당됩니다.$item
: 배열의 첫 번째 요소의 값이$item
변수에 할당됩니다.- 콜백 함수가 호출되고, 이전 반복의 결과값(
$carry
)과 현재 요소($item
)를 활용하여 새로운 값을 반환합니다.
- 두 번째 반복(iteration)부터: 이후의 반복에서는 초깃값(
$initial
)은 사용되지 않습니다. 대신, 이전 반복의 결과값($carry
)과 현재 요소($item
)가 콜백 함수로 전달됩니다.-
$carry
: 이전 반복에서 반환된 값(이전 결과 값)이$carry
변수에 할당됩니다. -
$item
: 다음 배열 요소의 값이$item
변수에 할당됩니다. -
콜백 함수가 호출되고, 이전 반복의 결과값(
$carry
)과 현재 요소($item
)를 활용하여 새로운 값을 반환합니다.
-
- 반복 종료: 배열의 모든 요소가 처리될 때까지 이 반복과 결과 값의 계산이 반복됩니다.
- 최종 결과 반환: 배열의 모든 요소가 처리된 후,
array_reduce()
함수는 마지막 콜백 함수 호출의 반환값을 최종 결과 값으로 반환합니다.
요약하면, array_reduce()
함수는 배열의 각 요소를 처리하면서 콜백 함수를 호출하고, 콜백 함수는 이전 반복의 결과값($carry
)과 현재 요소($item
)를 기반으로 새로운 값을 반환합니다. 이를 반복하여 하나의 최종 결과 값을 생성합니다. 이러한 메커니즘을 사용하면 배열의 요소를 하나의 결과 값으로 생성해서 집계할 때 콜백 함수를 활용할 수 있습니다.
array_reduce()
함수의 다양한 활용 사례
array_reduce()
함수는 주로 다음과 같은 예제의 목적으로 사용됩니다.
배열의 모든 요소를 더하기
배열의 모든 요소를 곱하기
위의 코드에서는 초기 누적 값으로 1을 사용하고, 각 요소를 곱하여 결과를 누적합니다. 초기 누적 값을 0으로 설정하면 모든 값이 0으로 곱해지므로 1을 사용하는 것이 중요합니다.
배열의 최솟값 찾기
위의 코드에서는 초기 누적 값을 배열의 첫 번째 요소인 $numbers[0]
로 설정하고, 콜백 함수에서 현재 요소가 누적 값보다 작으면 현재 요소를 최솟값으로 선택합니다.
배열의 최댓값 찾기
위의 코드에서도 초기 누적 값을 배열의 첫 번째 요소로 설정하고, 콜백 함수에서 현재 요소가 누적 값보다 크면 현재 요소를 최댓값으로 선택합니다.
배열의 모든 요소를 문자열로 결합하기
위의 코드에서는 초기 누적 값을 빈 문자열(''
)로 설정하고, 콜백 함수에서 현재 요소를 누적 값에 문자열 결합(.
)하여 결과를 얻습니다. 따라서 배열의 모든 요소가 하나의 문자열로 결합됩니다.
위 예제의 경우 배열을 문자열로 변환하는 PHP의 내장 함수인 implode()
함수를 사용하는 것이 더 효율적일 수 있습니다.
array_reduce()
함수를 사용하면 배열의 요소를 반복하면서 사용자 지정 논리를 적용하여 결과를 누적하는 데 유용하게 사용할 수 있습니다. 이를 통해 배열의 요소를 결합하거나 다른 형태로 변환하는 작업을 수행할 수 있습니다.