PHP 개발 중 연관 배열이나 다차원 배열을 XML 형식으로 변환해야 하는 경우가 종종 있습니다. 이럴 때 PHP에 기본으로 내장된 array_walk_recursive() 함수를 사용하면 매우 간단하게 해결할 수 있습니다.
array_walk_recursive() 함수란?
array_walk_recursive()는 PHP의 내장 함수로, 다차원 배열의 모든 리프(leaf) 요소를 재귀적으로 순회하면서 지정한 콜백 함수를 각 요소에 적용합니다. 이 함수를 SimpleXML과 함께 사용하면 배열의 키(key)는 XML 엘리먼트(태그)로, 값(value)은 해당 엘리먼트의 내용으로 자동 변환됩니다.
간단한 예제를 통해 실제 동작 방식을 확인해 보겠습니다.
예제
<?php
$array = array (
'name' => 'alex',
'empdept' => 'account',
'address' => array (
'city' => 'michigan'
 ),
);
// root 엘리먼트를 가지는 XML 객체를 생성합니다.
$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($array, array ($xml, 'addChild'));
print $xml->asXML();
?>출력 결과
<?xml version="1.0"?> <root> <name>alex</name> <empdept>account</empdept> <city>michigan</city> </root>
참고 사항
실행 중 "PHP Fatal error: Uncaught Error: Class 'SimpleXMLElement' not found"와 같은 오류 메시지가 표시된다면, 서버에 XML 확장 모듈이 설치되어 있지 않은 것입니다. 이 경우 php-xml 또는 php-simplexml 패키지를 설치한 뒤 웹 서버를 재시작하면 정상적으로 동작합니다.