Forum und email

array_walk

(PHP 4, PHP 5)

array_walk — 배열의 개개의 원소에 대해서 특정 함수를 적용하여 수행한다

설명

bool array_walk ( array $array , callback $function [, mixed $userdata ] )

성공할 경우 TRUE를, 실패할 경우 FALSE를 반환합니다.

array 배열의 각 원소에 사용자 정의 함수 function 을 적용한다. 표준적으로 function 는 두개의 매개변수를 갖는다. array 매개변수의 값이 첫번째가 되고, key/index가 두번째가 된다. 선택적인 userdata 매개변수가 적용되면, 콜백 function 에 세번째 매개변수가 전달될것이다.

함수 function 이 주어진 것보다 더 많은 매개변수를 요구하면 array_walk()function 을 호출할때마다 E_WARNING 레벨의 에러를 발생한다. 이런 경고는 array_walk()@ 기호를 덧붙이거나, error_reporting()을 사용함으로써 은폐시킬 수 있다.

Note: function 은 배열의 실제 값들과 동작할 필요가 있다면, function 의 첫번째 매개변수에 reference를 설정한다. 그러면 원래 배열 자체에 그 원소들을 변경할수 있다.

Note: function 에 key와 userdata를 전달하는 기능이 4.0.0에서 추가되었다.

array_walk()array 의 내부적인 배열 포인터에 의해 영향을 받지 않는다. array_walk()는 포인터 위치에 상관없이 전체 배열를 가로지를것이다. 포인터를 초기화(reset)시키려면, reset()을 사용하도록 한다. PHP 3에서 array_walk()는 포인터를 초기화시킨다.

유저가 콜백 함수에서 배열자체를 변경하지 않는다. 즉, 원소를 추가/삭제, 원소를 unset 하는등. array_walk()에 적용된 배열이 변경되면, 이 함수의 동작은 정의되지 않고, 원하는대로 되지 않는다.

Example#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<br>\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

list(), foreach, each(), call_user_func_array() 참고.