사용자 정의 함수와 'array_map'
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨. 68개 중 40번째.
strtoupper와 같은 내장 함수는 array_map()과 함께 사용하면 잘 작동하지만, 진정한 강력함은 자신만의 custom 함수를 사용하는 데서 나옵니다. 이를 통해 정확한 요구 사항에 맞춘 특정 변환을 만들 수 있습니다.
array_map()과 함께 custom function을 사용하려면, 첫 번째 매개변수에 function 이름을 string으로 전달하기만 하면 됩니다. custom function은 하나의 매개변수(현재 array 요소)를 받아 변환된 값을 return해야 합니다.
<?php
function doubleNumber($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// 결과: [2, 4, 6, 8, 10]
?>이 접근 방식을 사용하면 각 요소가 처리되는 방식을 완전히 제어할 수 있습니다. custom function 내에서 복잡한 계산, string 조작 또는 기타 로직을 수행할 수 있으므로, array_map()은 데이터 변환 작업에 매우 유연하게 활용됩니다.
챌린지
쉬움두 개의 입력을 받습니다. 하나는 Celsius 단위의 쉼표로 구분된 temperatures 목록이고, 다른 하나는 conversion을 위한 target unit입니다(F는 Fahrenheit, K는 Kelvin을 의미). 첫 번째 입력에는 0,10,20,30,100 형식의 string으로 temperatures가 포함되며, 두 번째 입력은 conversion 유형을 나타내는 단일 문자입니다.
두 입력을 Read하고, 쉼표로 구분된 temperatures를 numbers의 array로 변환한 다음, Celsius temperature를 target unit으로 convert하는 custom function을 Create하세요. custom function과 함께 array_map()을 사용하여 모든 temperatures를 변환하고, 각 converted temperature를 별도의 line에 2 decimal places로 rounded하여 Print하세요.
conversion 공식:
- Celsius에서 Fahrenheit로:
(C × 9/5) + 32 - Celsius에서 Kelvin으로:
C + 273.15
입력 형식:
- 첫 번째 line: Celsius의 쉼표로 separated된 temperatures (예:
0,10,20,30,100) - 두 번째 line: target conversion unit -
F또는K중 하나 (예:F)
Expected output: 각 converted temperature를 별도의 line에 2 decimal places로 rounded하여 Print
직접 해보기
<?php
// 쉼표로 구분된 온도 읽기
$temperatures = fgets(STDIN);
// 대상 단위 읽기 (F 또는 K)
$unit = trim(fgets(STDIN));
// 쉼표로 구분된 문자열을 숫자 배열로 변환
$tempArray = explode(',', trim($temperatures));
// TODO: 아래에 코드를 작성하세요
// 섭씨를 대상 단위로 변환하는 사용자 정의 함수 만들기
// array_map()을 사용하여 모든 온도에 변환 적용
// 변환된 각 온도를 소수점 둘째 자리까지 반올림하여 별도의 줄에 출력
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 & 흐름의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러