Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP XML XPath-停止重复节点_Php_Xml_Xpath_Nodes_Last.fm - Fatal编程技术网

PHP XML XPath-停止重复节点

PHP XML XPath-停止重复节点,php,xml,xpath,nodes,last.fm,Php,Xml,Xpath,Nodes,Last.fm,我正在尝试使用简单XML中的XPath元素解析XML文档。但是,下面的脚本(在last.fm API中搜索条目“U2”时)返回: 乘客Bono乘客Bono U2和绿日乘客 博诺U2和绿日R.E.M.乘客博诺U2和绿日R.E.M。 INXS 如您所见,存在重复节点。是否有一种方法可以阻止显示重复/重复的节点 (PHP代码) (XML文档) U2 704acdbb-1415-4782-b0b6-0596b8c55e46 http://www.last.fm/music/U2 http://user

我正在尝试使用简单XML中的XPath元素解析XML文档。但是,下面的脚本(在last.fm API中搜索条目“U2”时)返回:

乘客Bono乘客Bono U2和绿日乘客 博诺U2和绿日R.E.M.乘客博诺U2和绿日R.E.M。 INXS

如您所见,存在重复节点。是否有一种方法可以阻止显示重复/重复的节点

(PHP代码)

(XML文档)


U2
704acdbb-1415-4782-b0b6-0596b8c55e46
http://www.last.fm/music/U2
http://userserve-ak.last.fm/serve/34/107345.jpg
1.
2613654
96947986
乘客
http://www.last.fm/music/Passengers
http://userserve-ak.last.fm/serve/34/4826014.jpg

我假设您的XML片段只是完整结果的一小部分,所以

您需要修改foreach循环,以检查当前正在处理的艺术家之前是否见过。最简单的方法是使用数组:

$seen = array();
foreach ($releases as $artist) {
    if (!isset($seen[$artist->name])) {
        $seen[$artist->name] = true;
    }
}
循环完成后,您将获得一个很好的阵列,每个艺术家都是$seen中的一个键。要复制简单的字符串连接,只需内爆/回显:

echo implode(array_keys(', ', $seen));

它没有返回任何结果,所以我尝试打印数组:$xmlmusic=newsimplexmlement($result)$releases=$xmlmusic->xpath('artist/similor/artist')$seen=数组();foreach($artist发行){if(!isset($seen[$artist->name]){$seen[$artist->name]=true;}}}print\r($seen);但是它返回一个空数组?
$seen = array();
foreach ($releases as $artist) {
    if (!isset($seen[$artist->name])) {
        $seen[$artist->name] = true;
    }
}
echo implode(array_keys(', ', $seen));