array_walk
(PHP 4, PHP 5)
array_walk — 배열의 개개의 원소에 대해서 특정 함수를 적용하여 수행한다
설명
성공할 경우 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