[php]array_walk

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 함수를 사용하여 다차원 배열의 모든 요소에 작업을 적용할 수 있습니다.

게시됨

카테고리

,

작성자