PHP 매뉴얼
이전 |  | 다음

# array_walk

(PHP 3>= 3.0.3, 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()을 사용함으로써 은폐시킬 수 있다.

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

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

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

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

예 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() 참고.

이전 | 처음으로 | 다음
array_values | 위로 | array