'array_map'으로 데이터 변환하기
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 39번째.
array_map() 함수는 각 요소에 콜백 함수를 적용하여 배열의 모든 요소를 변환하는 강력한 도구입니다. 원본 배열을 수정하는 함수들과 달리, array_map()은 변환된 값들로 구성된 완전히 새로운 배열을 생성하여 반환합니다.
기본 구문은 두 개의 매개변수를 필요로 합니다. 첫 번째는 적용하려는 콜백 함수이고, 두 번째는 변환하려는 배열입니다. PHP에는 array_map()과 함께 콜백으로 완벽하게 작동하는 많은 내장 함수가 있습니다.
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// 결과: ["ALICE", "BOB", "CHARLIE"]
?>이 예제에서 strtoupper은(는) $names 배열의 각 요소에 적용됩니다. 원본 배열은 변경되지 않은 상태로 유지되는 반면, $uppercaseNames은(는) 변환된 결과를 포함합니다. 이로 인해 원본 값을 잃지 않고 데이터를 처리해야 할 때 array_map()은(는) 이상적입니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움두 개의 입력을 받게 됩니다: 쉼표로 구분된 제품 가격 목록과 할인율입니다. 첫 번째 입력은 19.99,25.50,12.75,8.00과 같은 형식의 문자열로 된 가격들이며, 두 번째 입력은 숫자로 된 할인율(예: 15)입니다.
두 입력을 모두 읽고, 쉼표로 구분된 가격들을 숫자 배열로 변환한 다음, array_map()을 사용하여 각 가격에 할인율을 적용하세요. 이때 변환을 위해 내장된 floatval 함수를 사용하고 할인을 계산한 뒤, 각 할인된 가격을 소수점 둘째 자리까지 반올림하여 별도의 줄에 출력하세요.
할인된 가격을 계산하려면: 원래 가격에 (100 - discount) / 100을 곱합니다.
입력 형식:
- 첫 번째 줄: 쉼표로 구분된 제품 가격 (예:
19.99,25.50,12.75,8.00) - 두 번째 줄: 숫자로 된 할인율 (예:
15)
예상 출력: 각 할인된 가격을 별도의 줄에 출력하며, 소수점 둘째 자리까지 반올림합니다 (예: 16.99, 21.68, 10.84, 6.80)
치트 시트
array_map() 함수는 배열의 각 요소에 콜백 함수를 적용하여 모든 요소를 변환합니다. 이 함수는 원본 배열을 변경하지 않고 변환된 값들로 구성된 새로운 배열을 생성하여 반환합니다.
내장 함수를 사용한 기본 구문:
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// 결과: ["ALICE", "BOB", "CHARLIE"]
?>이 함수는 콜백 함수와 변환할 배열이라는 두 개의 매개변수를 받습니다. 콜백으로 내장 PHP 함수나 익명 함수를 사용할 수 있습니다.
직접 해보기
<?php
// 입력 읽기
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// 쉼표로 구분된 가격을 배열로 변환
$prices = explode(',', $prices_input);
// TODO: 아래에 코드를 작성하세요
// array_map()을 사용하여 각 가격에 할인을 적용하세요
// 각 할인된 가격을 별도의 줄에 출력하세요
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.