0

Spotify URI を使用した Echonest API からの曲のリストがありますが、必要以上に多くの曲を追加します。全部ではなく1つだけ必要ですが、これを20回続けたいと思います。したがって、ノード内の最初のトラックのみを取得して、次のトラックに移動したいと考えています。

これが私が情報を取得するxmlファイルです

これは私が使用するPHPです:

<iframe src="https://embed.spotify.com/?uri=spotify:trackset:Playlist based on Rihanna:<?php 
$completeurl = "http://developer.echonest.com/api/v4/playlist/static?api_key=FILDTEOIK2HBORODV&artist=Rihanna&format=xml&results=20&type=artist-radio&bucket=tracks&bucket=id:spotify-WW"; 
$xml = simplexml_load_file($completeurl); 
$i = 1;
foreach ($xml->xpath('//songs') as $playlist) {
    $spotify_playlist = $playlist->foreign_id;
    $spotify_playlist2 = str_replace("spotify-WW:track:",'',$spotify_playlist);
    echo  "$spotify_playlist2,"; 
    if ($i++ == 10) break;
}
?>" width="300" height="380" frameborder="0" allowtransparency="true" style="float: right"></iframe>
4

2 に答える 2

0

結果を数えることで、曲の数を取得できます。

$numberOfSongsElements = count($xml->xpath('//songs'));

これにより、取得したい曲がそこにあるかどうかを確認できます。例えば:

$playlistNumber = 1;
if ($playlistNumber > $numberOfSongsElements) {
    throw new Exception('Not enough <songs> elements');
}
$songsElement = $xml->xpath("//songs[$playlistNumber]");

Xpath述語内の位置番号を使用して:

//songs[1]  --  abbreviated form of: //songs[position()=1]
//songs[2]
//songs[3]
...

興味のあるノードを直接選択できます。最初 ( 1) または他の番号 ( last()) です。2.4 述語および4.1 ノード セット関数を参照してください。

これが役に立てば幸いです。すでにコメントしたように、あなたの質問はそれほど明確ではありませんでした。カウントと番号付けされたアクセスにより、探している要素を少なくともプログラムで選択できるようになることを願っています。

于 2013-01-01T12:56:38.680 に答える
0

したがって、ノード内の最初のトラックのみを取得して、次のトラックに移動したいと考えています。

あなたが説明しているcontinue- これは次の反復に移動し、現在のループで次のコードをスキップします。一方break、現在のループを終了します。

于 2012-12-31T15:56:33.227 に答える