0

このトピックについてかなりの調査を行った後、残念ながら答えが見つかりませんでした。ここにいる多くの人にとって、これは非常に単純な質問だと思います。

API (PHP を使用) を介して Last.fm の XML データベースに接続しています。存在するアーティストまたは空白のフィールドを入力すると、正しい情報を問題なくエコーできます。ただし、ユーザーが存在しないアーティストを入力した場合、何もエコーできません。

私の質問はこれです。その XML 要素が存在しない場合、必要なメッセージをどのようにエコーできますか? 私の考えは次のようなものでした。

   foreach ($uk_events as $event){

$venue_city = (string) $event->venue->location->city;
$image = (string) $event->image[2];
$uk_street = (string) $event->venue->location->street;
$uk_postcode = (string) $event->venue->location->postalcode;
$startdate = (string) $event->startDate;
$starttime = (string) $event->startTime;
$uk_venues = (string) $event->venue->name; 
$uk_names = (string) $event->artists->artist;
$website = (string) $event->website;

        if (empty($uk_names)){

    echo "<p class='sorry'>Sorry, but it doesn't look like this artist exists. Either they're exceptionally obscure or they're from
    another realm. Try again, or have a look at the below suggestions.</p>";

    }

いくつかの試行錯誤の後、私が得た最善の方法は上記をエコーすることですが、検索対象に関係なくエコーされます。アーティストが XML データベース内に存在しない場合にのみ、上記を表示する必要があります。

これをどのように進めるかについて私にアイデアを与えることができる人には非常に感謝しています.

ありがとうございました。

4

1 に答える 1

0

呼び出しで GitHub の SDK を使用している場合

$uk_events = $artistClass->search($methodVars)

次に、コードを編集して読み取ることができます

if ($uk_events === false) {
    echo "<p class='sorry'>Sorry, we couldn't contact the server. Try again later.</p>";             

} elseif (empty($uk_events)) {
    echo "<p class='sorry'>Sorry, but it doesn't look like this artist exists. Either they're exceptionally obscure or they're from another realm. Try again, or have a look at the below suggestions.</p>";             

} else {
   foreach ($uk_events as $event){             
       .... // print list
   }      
} 

生の API 呼び出しを使用している場合は、次のような応答が返されます。

// Response to http://ws.audioscrobbler.com/2.0/?method=artist.search&artist=NotARealArtist

<?xml version="1.0" encoding="UTF-8"?>
<lfm status="ok">
  <results xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" for="NotARealArtist">
    <opensearch:Query role="request" startPage="1" searchTerms="NotARealArtist"/>
    <opensearch:totalResults>0</opensearch:totalResults>
    <opensearch:startIndex>0</opensearch:startIndex>
    <opensearch:itemsPerPage>30</opensearch:itemsPerPage>
    <artistmatches>
    </artistmatches>
  </results>
</lfm>

したがって、アーティストがいないことを識別する方法は 2 つあります。

  1. 「opensearch:totalResults」要素に「0」の値が含まれています
  2. 「artistmatches」内の子要素の数はゼロです

そのため、これらの値の XML を解析します。

于 2012-05-21T11:35:56.200 に答える