array_filter
함수는 배열의 각 요소를 필터링하여 새로운 배열을 생성합니다. 필터 함수를 사용하여 각 요소를 평가하고, 평가 결과가 true
인 요소만 새 배열에 포함됩니다.
$numbers = [1, 2, 3, 4, 5];
$filteredNumbers = array_filter($numbers, function($number) {
return $number % 2 == 0;
});
print_r($filteredNumbers); // 출력: [2, 4]
위의 예제에서는 $numbers
배열에서 짝수인 요소만을 필터링하여 $filteredNumbers
배열을 생성하였습니다. 필터 함수에서 $number % 2 == 0
조건을 사용하여 짝수를 판별하였습니다. 이렇게 함으로써, $filteredNumbers
배열에는 [2, 4]
값만 포함됩니다.
다른 함수와 조합하여 응용하는 코드
array_filter
함수는 다른 함수와 조합하여 다양한 응용이 가능합니다. 예를 들어, array_map
함수와 함께 사용하여 배열의 각 요소에 함수를 적용하고 결과를 필터링할 수 있습니다.
$numbers = [1, 2, 3, 4, 5];
$squaredNumbers = array_map(function($number) {
return $number ** 2;
}, $numbers);
$filteredNumbers = array_filter($squaredNumbers, function($number) {
return $number % 2 == 0;
});
print_r($filteredNumbers); // 출력: [4, 16]
위의 예제에서는 $numbers
배열의 각 요소에 제곱 연산을 적용한 후, 그 결과에서 짝수를 필터링하여 $filteredNumbers
배열을 생성하였습니다. 따라서, 출력은 [4, 16]
입니다.
다른 함수와 조합하여 응용하는 코드 (2)
또 다른 예로는 array_reduce
함수와 함께 사용하여 배열 요소를 축소하고 그 결과를 필터링할 수 있습니다.
$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, function($carry, $number) {
return $carry + $number;
});
$filteredSum = array_filter([$sum], function($number) {
return $number % 2 == 0;
});
print_r($filteredSum); // 출력: [14]
위의 예제에서는 $numbers
배열의 모든 요소를 더한 후, 그 결과에서 짝수를 필터링하여 $filteredSum
배열을 생성하였습니다. $sum
은 15이지만, 필터링에 의해 출력은 [14]
가 됩니다.
조건문과 반복문과 함께 사용하는 샘플 코드
array_filter
함수는 조건문과 반복문과 함께 사용하여 조건에 맞는 요소를 찾거나 특정
작업을 수행할 수 있습니다. 다음은 조건문과 반복문을 사용하여 배열에서 특정 값 이상의 요소를 찾는 예제입니다.
$numbers = [10, 15, 20, 25, 30];
$threshold = 20;
$filteredNumbers = [];
foreach ($numbers as $number) {
if ($number >= $threshold) {
$filteredNumbers[] = $number;
}
}
print_r($filteredNumbers); // 출력: [20, 25, 30]
위의 예제에서는 $numbers
배열에서 $threshold
값 이상인 요소만 $filteredNumbers
배열에 추가하였습니다. 이를 위해 foreach
반복문과 조건문을 사용하였습니다. 출력은 [20, 25, 30]
입니다.
성능 향상을 위한 팁
array_filter
함수의 성능을 향상시키기 위해 다음과 같은 팁을 고려할 수 있습니다:
- 필터 함수를 최적화하십시오: 필터 함수는 각 배열 요소에 대해 호출되므로, 필터 함수 내에서 불필요한 작업을 최소화하고 성능을 개선하는 것이 중요합니다.
- 제한된 범위에서 필터링하십시오:
array_filter
함수에 옵션적인 세번째 매개변수로 배열의 특정 범위를 지정할 수 있습니다. 필터링할 요소의 범위를 제한함으로써 성능을 향상시킬 수 있습니다. - 키를 유지하지 않아야 할 경우,
array_values
함수를 사용하십시오: 필터링된 배열에서 키를 유지할 필요가 없는 경우,array_values
함수를 사용하여 인덱스를 재조정할 수 있습니다. 이렇게 하면 메모리 사용량이 줄어들어 성능이 향상될 수 있습니다.