'array_reduce'로 데이터 축소하기
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 43번째.
array_reduce() 함수는 array_map() 및 array_filter()와는 다른 접근 방식을 취합니다. 새로운 배열을 반환하는 대신, 배열의 모든 요소를 처리하여 단일 값을 생성합니다. 이로 인해 합계 계산, 최댓값 찾기 또는 모든 요소를 하나의 결과로 결합하는 것과 같은 작업에 적합합니다.
이 함수는 세 개의 매개변수를 필요로 합니다: 처리할 배열, 요소를 결합하는 방법을 정의하는 콜백 함수, 그리고 선택 사항인 초기값입니다. 콜백 함수는 두 개의 매개변수를 받습니다: 누적된 결과("carry"라고 불림)와 현재 배열 요소입니다.
<?php
function addNumbers($carry, $item) {
return $carry + $item;
}
$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, "addNumbers", 0);
// 결과: 15
?>이 예제에서 함수는 초기값 0으로 시작하며, 현재까지의 합계와 각 배열 요소를 사용하여 addNumbers를 반복적으로 호출합니다. 이 누적 과정은 모든 요소가 처리될 때까지 계속되어 최종적으로 축소된(reduced) 값을 결과로 남깁니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움두 개의 입력을 받게 됩니다: 쉼표로 구분된 숫자 목록과 연산 유형입니다. 첫 번째 입력은 5,10,15,20,25와 같은 형식의 문자열로 된 숫자들을 포함하며, 두 번째 입력은 연산을 나타내는 단일 문자입니다: 합계를 위한 S, 곱을 위한 P, 또는 최댓값을 위한 M입니다.
두 입력을 모두 읽고, 쉼표로 구분된 숫자들을 정수 배열로 변환한 다음, 지정된 연산을 수행하는 사용자 정의 콜백 함수를 만드세요. array_reduce()를 콜백 함수 및 적절한 초기값과 함께 사용하여 모든 숫자를 하나의 결과로 처리하고, 최종 결과를 출력하세요.
연산 상세 정보:
S(Sum): 모든 숫자를 더합니다 (초기값: 0)P(Product): 모든 숫자를 곱합니다 (초기값: 1)M(Maximum): 가장 큰 숫자를 찾습니다 (초기값: 배열의 첫 번째 숫자 또는 매우 작은 수)
콜백 함수는 두 개의 매개변수, 즉 누적된 결과(carry)와 현재 배열 요소(item)를 받아야 하며, 연산 유형에 따라 업데이트된 누적 값을 반환해야 합니다.
입력 형식:
- 첫 번째 줄: 쉼표로 구분된 숫자 (예:
5,10,15,20,25) - 두 번째 줄: 연산 유형 -
S,P, 또는M중 하나 (예:S)
예상 출력: reduce 연산의 결과를 나타내는 단일 숫자
치트 시트
array_reduce() 함수는 배열의 모든 요소를 처리하여 단일 값을 생성하며, 합계를 계산하거나 요소를 결합하는 데 적합합니다.
이 함수는 처리할 배열, 콜백 함수, 그리고 선택 사항인 초기값의 세 가지 매개변수가 필요합니다. 콜백은 누적된 결과(carry)와 현재 배열 요소를 받습니다.
<?php
function addNumbers($carry, $item) {
return $carry + $item;
}
$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, "addNumbers", 0);
// 결과: 15
?>결과를 소수점 둘째 자리까지 형식화하려면 number_format($total, 2)를 사용하세요.
직접 해보기
<?php
// 입력 읽기
$numbers_input = trim(fgets(STDIN));
$operation = trim(fgets(STDIN));
// 쉼표로 구분된 문자열을 정수 배열로 변환
$numbers = array_map('intval', explode(',', $numbers_input));
// TODO: 아래에 코드를 작성하세요
// 연산 유형에 따라 콜백 함수 생성
// 콜백 함수와 적절한 초기값을 사용하여 array_reduce()를 사용하세요
// 결과 출력
echo $result;
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.