嗨我有一个simplexml_load_file的问题,我不太确定如何通过$ item-> padre命令我的数组。
我需要通过$ item-> padre。来做foreach和订购。=,我不知道该怎么做。
function create_sitemap($sitemap){
$xml = file_exists('sitemap.xml') ? $xml = simplexml_load_file('sitemap.xml'): exit('Failed to open sitemal.xml.');
$xml = uasort($xml, function($a,$b){ return strcmp($a->padre, $b->padre); });
foreach ($xml->url as $item) {
echo "<p>" . $item->loc. "</p>";
echo "<p>" . $item->padre . "</p>";
}
}
提前致谢。
答案 0 :(得分:1)
$xml
不是array,而是SimpleXMLElement,因此usort()不会以这种方式运作。
但是例如SimpleXMLElement->xpath()返回一个数组,您可以使用它来查找所有<url>
元素。
create_sitemap('test');
function create_sitemap($sitemap){
$xml = getData();
$urls = $xml->xpath('url');
uasort($urls, function($a,$b){ return strcmp($a->padre, $b->padre); });
foreach ($urls as $item) {
echo "<p>{$item->loc}</p><p>{$item->padre}</p>\n";
}
}
function getData() {
return new SimpleXMLElement('<xml>
<url>
<loc>loc Z</loc>
<padre>padre Z</padre>
</url>
<url>
<loc>loc A</loc>
<padre>padre A</padre>
</url>
<url>
<loc>loc C</loc>
<padre>padre C</padre>
</url>
<url>
<loc>loc B</loc>
<padre>padre B</padre>
</url>
</xml>');
}
打印
<p>loc A</p><p>padre A</p>
<p>loc B</p><p>padre B</p>
<p>loc C</p><p>padre C</p>
<p>loc Z</p><p>padre Z</p>
您可能也对xslt
感兴趣