사용자 정의 함수와 'array_filter'
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨. 68개 중 42번째.
콜백 함수 없이 array_filter()를 사용하면 빈 값이 제거되지만, 진정한 위력은 사용자 정의 콜백 함수를 제공할 때 나타납니다. 이를 통해 특정 기준에 따라 어떤 요소를 유지할지 정확하게 정의할 수 있습니다.
array_filter()와 함께 사용자 정의 함수를 사용하려면, 함수 이름을 두 번째 매개변수로 전달하세요. 콜백 함수는 하나의 매개변수(현재 배열 요소)를 받아야 하며, 요소를 유지하려면 true를, 제외하려면 false를 반환해야 합니다.
<?php
function isEven($number) {
return $number % 2 === 0;
}
$numbers = [1, 2, 3, 4, 5, 6, 7, 8];
$evenNumbers = array_filter($numbers, "isEven");
// 결과: [2, 4, 6, 8]
?>이 예제에서 isEven 함수는 나머지 연산자를 사용하여 각 숫자를 테스트합니다. true를 반환하는 숫자(짝수)만 필터링된 결과에 포함됩니다. 이 방식은 필터링 로직을 완벽하게 제어할 수 있게 해주며, array_filter()를 데이터 처리 작업에 매우 다재다능하게 만들어 줍니다.
챌린지
쉬움두 개의 입력을 받게 됩니다: 쉼표로 구분된 제품 가격 목록과 최소 가격 임계값입니다. 첫 번째 입력은 15.99,45.00,8.50,120.00,22.75와 같은 형식의 문자열로 된 가격들이며, 두 번째 입력은 숫자로 된 최소 가격 임계값(예: 20)입니다.
두 입력을 모두 읽고, 쉼표로 구분된 가격들을 숫자 배열로 변환한 다음, 가격이 임계값보다 크거나 같은지 확인하는 사용자 정의 콜백 함수를 만드세요. array_filter()와 사용자 정의 함수를 사용하여 임계값을 충족하는 가격만 남기고, 필터링된 각 가격을 원래 나타난 순서대로 별도의 줄에 출력하세요.
사용자 정의 콜백 함수는 하나의 매개변수(가격)를 받아야 하며, 가격이 임계값보다 크거나 같으면 true를 반환하고, 그렇지 않으면 false를 반환해야 합니다.
입력 형식:
- 첫 번째 줄: 쉼표로 구분된 제품 가격 (예:
15.99,45.00,8.50,120.00,22.75) - 두 번째 줄: 숫자로 된 최소 가격 임계값 (예:
20)
예상 출력: 임계값 이상인 각 가격을 원래 순서를 유지하며 별도의 줄에 출력
직접 해보기
<?php
// 입력 읽기
$prices_input = trim(fgets(STDIN));
$threshold = floatval(fgets(STDIN));
// 쉼표로 구분된 가격들을 배열로 변환
$prices = array_map('floatval', explode(',', $prices_input));
// TODO: 아래에 코드를 작성하세요
// 가격이 threshold 이상인지 확인하는 커스텀 콜백 함수 생성
// 커스텀 함수와 함께 array_filter() 사용
// 필터링된 각 가격을 별도의 줄에 출력
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 & 흐름의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러