array_walk
array_walk
함수는 배열의 각 요소에 대해 사용자 정의 함수를 적용하는 기능을 제공합니다.
<?php
function square(&$value, $key)
{
$value = $value ** 2;
}
$numbers = [1, 2, 3, 4, 5];
array_walk($numbers, 'square');
print_r($numbers);
?>
결과:
Array
(
[0] => 1
[1] => 4
[2] => 9
[3] => 16
[4] => 25
)
위의 예제에서 square
함수는 배열의 각 요소를 제곱하여 값을 변경합니다. array_walk
함수를 호출할 때 두 번째 인자로 함수 이름을 전달하고, 해당 함수는 참조로 전달된 값에 대해 작업을 수행합니다.
다른 함수와 함께 응용하는 코드
<?php
function add(&$value, $key)
{
$value += 10;
}
function multiply(&$value, $key)
{
$value *= 2;
}
$numbers = [1, 2, 3, 4, 5];
array_walk($numbers, 'add');
array_walk($numbers, 'multiply');
print_r($numbers);
?>
결과:
Array
(
[0] => 22
[1] => 24
[2] => 26
[3] => 28
[4] => 30
)
위의 예제에서 add
함수는 각 요소에 10을 더하고, multiply
함수는 각 요소를 2배로 곱합니다. array_walk
함수를 여러 번 사용하여 배열에 연속적으로 함수를 적용할 수 있습니다.
조건문과 반복문과 함께 사용하는 샘플 코드
<?php
function process(&$value, $key)
{
if ($value % 2 === 0) {
$value = 'even';
} else {
$value = 'odd';
}
}
$numbers = [1, 2, 3, 4, 5];
array_walk($numbers, 'process');
print_r($numbers);
?>
결과:
Array
(
[0] => odd
[1] => even
[2] => odd
[3] => even
[4] => odd
)
위의 예제에서 process
함수는 각 요소가 홀수인지 짝수인지를 판별하여 값을 변경합니다. 조건문과 array_walk
함수를 함께 사용하여 배열의 요소에 조건부로 작업을 수행할 수 있습니다.
성능 향상을 위한 팁
array_walk
함수는 배열을 직접 변경하기 때문에 원본 배열의 복사본을 만들지 않습니다. 이는 메모리 사용량을 줄이고 성능을 향상시킵니다.- 사용자 정의 함수의 실행 시간이 오래 걸릴 경우,
array_walk
대신 반복문을 사용하여 배열을 직접 조작하는 것이 더 효율적일 수 있습니다. - 배열이 크고 여러 차원으로 구성된 경우에는
array_walk_recursive
함수를 사용하여 다차원 배열의 모든 요소에 작업을 적용할 수 있습니다.