PHP의 array_walk_recursive() 함수는 배열의 모든 요소에 대해 사용자가 정의한 함수를 재귀적으로 적용합니다. 일반적인 array_walk() 함수와 달리, 이 함수는 다차원 배열 내부에 중첩된 하위 배열의 요소까지 모두 순회하며 콜백 함수를 실행한다는 점이 큰 차이점입니다.
문법(Syntax)
array_walk_recursive(arr, custom_func, parameter)
매개변수(Parameters)
arr − 콜백 함수를 적용할 대상 배열입니다. (필수)
custom_func − 각 배열 요소에 적용할 사용자 정의 함수입니다. (필수)
parameter − 사용자 정의 함수에 추가로 전달할 매개변수입니다. (선택 사항)
반환 값(Return)
array_walk_recursive() 함수는 실행에 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.
예제 1: 기본 사용법
다음 예제는 중첩된 배열의 각 키(key)와 값(value)을 화면에 출력하는 방법을 보여줍니다.
<?php
function display($val,$key) {
echo "Key $key with the value $val<br>";
}
$arr1 = array("p"=>"accessories","q"=>"footwear");
$arr2 = array($arr1,"1"=>"electronics");
array_walk_recursive($arr2,"display");
?>출력 결과
Key p with the value accessories Key q with the value footwear Key 1 with the value electronics
위 결과를 보면, 상위 배열뿐만 아니라 $arr1이라는 하위 배열에 포함된 요소(p, q)까지 모두 순회하여 처리되었음을 확인할 수 있습니다. 또한 원래의 키가 그대로 유지됩니다.
예제 2: 추가 매개변수 전달하기
이번에는 세 번째 인자를 통해 콜백 함수에 추가 매개변수를 전달하는 예제를 살펴보겠습니다.
<?php
function display($val,$key, $extra) {
echo "Key $key $extra $val<br>";
}
$arr1 = array("p"=>"accessories","q"=>"footwear");
$arr2 = array($arr1,"5"=>"electronics");
array_walk_recursive($arr2,"display", "with value");
?>출력 결과
Key p with the value accessories Key q with the value footwear Key 5 with the value electronics
참고 사항
콜백 함수 내부에서 배열의 실제 값을 직접 수정하고 싶다면, 함수 정의 시 첫 번째 매개변수 앞에 참조 기호(&)를 붙여야 합니다. 예를 들어 function display(&$val, $key)처럼 선언하면 배열의 원본 값이 변경됩니다. 다차원 배열의 데이터를 일괄 변환하거나 검사할 때 array_walk_recursive() 함수를 활용하면 반복문 없이도 깔끔하게 처리할 수 있습니다.