배열 array_walk

(PHP 4, PHP 5, PHP 7, PHP 8)

array_walk — 배열의 모든 구성원에 사용자 제공 함수 적용


설명

array_walk(array|object &$array, callable $callback, mixed $arg = null): bool

array 배열의 각 요소에 사용자 정의 callback 함수를 적용합니다.

array_walk()array의 내부 배열 포인터의 영향을 받지 않습니다. array_walk()는 포인터 위치에 관계없이 전체 배열을 탐색합니다.


매개변수

array
입력 배열입니다.
callback
일반적으로 callback은 두 개의 매개변수를 취합니다. array 매개변수의 값이 첫 번째이고 키/인덱스가 두 번째입니다.

메모: callback이 배열의 실제 값으로 작동해야 하는 경우 callback의 첫 번째 매개변수를 참조로 지정하십시오. 그런 다음 해당 요소에 대한 모든 변경 사항은 원래 배열 자체에 적용됩니다.

메모: 많은 내부 함수(예: strtolower())는 예상보다 많은 인수가 전달되고 callback으로 직접 사용할 수 없는 경우 경고를 표시합니다.

array의 값만 잠재적으로 변경될 수 있습니다. 그 구조는 변경할 수 없습니다. 즉, 프로그래머는 요소를 추가, 설정 해제 또는 재정렬할 수 없습니다. 콜백이 이 요구 사항을 준수하지 않으면 이 함수의 동작이 정의되지 않고 예측할 수 없습니다.

arg
선택적 arg 매개변수가 제공되면 callback에 세 번째 매개변수로 전달됩니다.

반환 값

true를 반환합니다.


오류/예외

PHP 7.1.0부터 callback 함수에 2개 이상의 매개변수(배열 멤버의 값과 키)가 필요한 경우 ArgumentCountError가 발생하고 arg도 전달된 경우 3개 이상의 매개변수가 필요합니다. 이전에는 이 경우 array_walk()callback을 호출할 때마다 E_WARNING 수준의 오류가 생성되었습니다.


변경 로그

버전 설명
8.0.0 callback이 두 번째 또는 세 번째 매개변수가 참조로 전달될 것으로 예상하는 경우 이 함수는 이제 E_WARNING을 내보냅니다.

Examples

예제 #1 array_walk() 예제

                  
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

function test_alter(&$item1, $key, $prefix)
{
    $item1 = "$prefix: $item1";
}

function test_print($item2, $key)
{
    echo "$key. $item2\n";
}

echo "Before ...:\n";
array_walk($fruits, 'test_print');

array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";

array_walk($fruits, 'test_print');
?>
                  
                

위의 예는 다음을 출력합니다.

Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple
                

예제 #2 익명 함수를 사용하는 array_walk() 예제

                  
<?php
$elements = ['a', 'b', 'c'];

array_walk($elements, function ($value, $key) {
  echo "{$key} => {$value}\n";
});

?>
                  
                

위의 예는 다음을 출력합니다.

0 => a
1 => b
2 => c
                

기타

  • array_walk_recursive() - 배열의 모든 구성원에 사용자 함수를 재귀적으로 적용
  • iterator_apply() - 반복자의 모든 요소에 대한 함수 호출
  • list() - 변수를 배열인 것처럼 할당
  • each() - 배열에서 현재 키와 값 쌍을 반환하고 배열 커서를 앞으로 이동
  • call_user_func_array() - 매개변수 배열로 콜백 호출
  • array_map() - 주어진 배열의 요소에 콜백을 적용합니다.
  • foreach