Im пытается разобрать XML-документ, используя элемент XPath в простом XML. Однако этот сценарий ниже (При поиске входа «U2» в last.fm API) возвращает:PHP XML XPath - Остановить дубликаты узлов
Пассажиры Пассажиры Боно Пассажиры Боно U2 и Green Day Пассажиры Боно U2 и Green Day R.e.m. Пассажиры Bono U2 и Green Day R.E.M. INXS
Как вы можете видеть, существуют повторяющиеся узлы. Есть ли способ, которым я могу остановить отображение повторяющихся/повторяющихся узлов?
(PHP код)
$xmlmusic = new SimpleXMLElement($result);
$releases = $xmlmusic->xpath('artist/similar/artist');
foreach ($releases as $artist) {
$artistResult .= $artist->name . PHP_EOL;
echo $artistResult;}
(XML Document)
<?xml version="1.0" encoding="utf-8"?>
<lfm status="ok">
<artist>
<name>U2</name>
<mbid>704acdbb-1415-4782-b0b6-0596b8c55e46</mbid>
<url>http://www.last.fm/music/U2</url>
<image size="small">http://userserve-ak.last.fm/serve/34/107345.jpg</image>
<streamable>1</streamable>
<stats>
<listeners>2613654</listeners>
<playcount>96947986</playcount>
</stats>
<similar>
<artist>
<name>Passengers</name>
<url>http://www.last.fm/music/Passengers</url>
<image size="small">http://userserve-ak.last.fm/serve/34/4826014.jpg</image>
</artist>
Он не возвращался никаких результатов, поэтому я попробовал печать массива: $ xmlmusic = новый SimpleXMLElement ($ результат); $ релизы = $ xmlmusic-> xpath ('artist/similar/artist'); $ seen = array(); foreach ($ релизы как $ artist) { if (! Isset ($ seen [$ artist-> name])) { $ seen [$ artist-> name] = true; } } print_r ($ seen); Однако его возвращение пустого массива? – MattHeywood