在PHPsimplexml_load_string给出不一致的XML标签
$str = '<?xml version="1.0"?><toplevel><CompleteSuggestion><suggestion data="google"/></CompleteSuggestion><CompleteSuggestion><suggestion data="google maps"/></CompleteSuggestion><CompleteSuggestion><suggestion data="google translate"/></CompleteSuggestion><CompleteSuggestion><suggestion data="google docs"/></CompleteSuggestion><CompleteSuggestion><suggestion data="google drive"/></CompleteSuggestion><CompleteSuggestion><suggestion data="google classroom"/></CompleteSuggestion><CompleteSuggestion><suggestion data="google news"/></CompleteSuggestion><CompleteSuggestion><suggestion data="google earth"/></CompleteSuggestion><CompleteSuggestion><suggestion data="google flights"/></CompleteSuggestion><CompleteSuggestion><suggestion data="google calendar"/></CompleteSuggestion></toplevel>';
$xml = simplexml_load_string($str);
$data = json_decode(json_encode($xml),true);
echo "ARRAY: <pre>";
var_dump($data);
与简单的XML解析XML字符串时,在上述情况下,我得到不一致的XML标签,我使用的是从谷歌的自动完成功能,并将其与内建议作出回应CompleteSuggestions标记。看看php数组,我得到一个包含10个项目的CompleteSuggestion数组。前9个键有[0]键,而最后一个键有'[建议]键。这对我来说很奇怪。
任何一个人知道为什么简单的XML做到这一点?我怎样才能解决它,或解析它,因为我的foreach得到了一个偏移错误。谢谢!
您正在使用什么版本的PHP?上5.6的结果为[ “CompleteSuggestion”=> [/ * 10个*元件/]的数组] –
PHP 5.5。我也越来越10个元素的数组但这是每个元素与不同的密钥 – Dan
阵列中的问题,为什么,为什么,为什么,你的SimpleXML的对象转换为一个数组,并扔掉了SimpleXML的所有有用的位API? 'foreach($ xml-> CompleteSuggestion为$ comp_suggestion){$ suggestion = $ comp_suggestion-> suggestion; echo $ suggestion ['data']; }' – IMSoP