JSON (대부분의 경우), HTML (API가 아닌 호출 일 때) 및 XML [레거시 지원]의 세 가지 모드로 콘텐츠를 제공하는 RESTful API를 개발 중입니다.PHP 배열을 XML로 재귀 적으로 변환 하시겠습니까?
컨트롤러가 PHP 배열을 반환하고 뷰에서 원하는 출력으로 변환합니다. PHP에서 JSON은 json_encode를 통해, PHP에서 HTML은 뷰와 템플릿 엔진간에 전달되는 메시지를 통해 수행됩니다. 자, 다차원 PHP 배열을 처리하고 잘 형식화 된 XML로 변환하는 재귀 함수를 작성했습니다. 다음
내 함수 :이 예상대로 거의 80 %를 작업 배열을 통과하고 XML 출력을 생성한다
function recursive_xml($array, \SimpleXMLElement $xmlObj){
foreach($array as $key=>$value){
$xmlObj->addChild($key);
if(!is_array($value)){
$xmlObj->$key = $value;
}
else { //Value is array
recursive_xml($value, $xmlObj->$key);
}
}
header('Content-type: text/xml');
echo $xmlObj->asXML();
} //End recursive_xml
. 그러나 재밌는 문제는 recursive_xml의 두 번째 호출에서 XML decalaration 전에 XML 및 ALSO에 출력을 추가한다는 것입니다. 의 테스트 케이스를 보자
$obj = new \SimpleXMLElement("<root />");
$array = array("a"=>"b", "c"=>"d", "e"=>array("x"=>"z", "y"=>"v"));
recursive_xml($array, $obj);
을 이제 출력 :
`<e><x>z</x><y>v</y></e><?xml version="1.0"?>
<root><a>b</a><c>d</c><e><x>z</x><y>v</y></e></root>`
XML 선언과 함께 출력의 두 번째 줄은 내가 이상적으로 원하는 것이 무엇인가. 어떤 도움을 주시면 감사하겠습니다!
굉장! 고마워. 여기 마라톤 회의 중간에, 약 90 시간 동안 똑바로 프로그래밍되었습니다 :) 아내가 나를 떠나겠다고 협박하고 있습니다 ... 당신은 구세주입니다 @ 알렉산더! –
당신은 오신 것을 환영합니다. 90 시간 동안 소리가 들리지 않습니다. 큰 돈이 당신의 주머니에 닿았을 때 그녀를 위해 선물을 위해 돈을 계산했기를 바랍니다.) –