-4

我从我发现的 lastfm 脚本中获得了这个示例代码..:

function getArtistAlbums($artist, $size) {
    $artist = urlencode($artist);
    $xml    = "http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&artist={$artist}&api_key=xxxxxxxxxxxxxxxxxxxxx";
    $xml    = @file_get_contents($xml);

    if(!$xml) {
        return;  // Artist lookup failed.
    }

    $xml = new SimpleXMLElement($xml);
    $xml = $xml->topalbums;
    foreach ($xml->album as $album) {
        $album_img =  $album->image[$size];
        $album_image = convert($album_img);
        $album_name =  $album->name;

        //echo instead of returning
        echo $album_name."<br>".$album_image."<br><br>";
    }

但是我不想回显结果,而是想将所有结果都返回$album_image给一个变量并从另一个文件中调用它。我试过这个:

$xml = new SimpleXMLElement($xml);
$xml = $xml->topalbums;
$values = array();
foreach ($xml->album as $album) {
    $album_img =  $album->image[$size];
    $album_image = convert($album_img);
    $album_name =  $album->name;
    $values[] = $album_image;
    return $values;

    //echo instead of returning                     
    #echo $album_name."<br>".$album_image."<br><br>";
}

我知道我需要构建一个数组。我尝试了不同的方法,但是当我调用变量时总是得到“数组”。

该脚本来自这里:http ://techslides.com/lastfm-api-with-php/ 。在我的其他 PHP 脚本中,当我调用其他函数(例如艺术家专辑)时,我得到一个带有图像的返回,然后我可以设置它的样式并输出我想要的。但我不知道如何输出上述内容。当我在里面调用它时

echo '<div class='example'>'.getArtistAlbums(artist,2).'</div>'; 

它只是呼应图像。

问题是我如何才能以某种方式返回变量,然后在另一个变量中使用,例如艺术家专辑。例如:

$artist_image = getArtist($artist,2); 

然后使用$artist_imagewithechoclass 等。

4

2 回答 2

0

我会做:

$xml = new SimpleXMLElement($xml);
$xml = $xml->topalbums;
$values = array();
foreach ($xml->album as $album) {
    $album_img =  $album->image[$size];
    $album_image = convert($album_img);
    $album_name =  $album->name;
    array_push($values, $album_image);
}
return $values;

检查以确保数组中的所有内容都正确:

var_dump($values);

要访问其他文件中的值..

foreach($values as $val){
    echo $val;
}

编辑...我认为这就是您想要做的...

$values = getArtistAlbum(artist, 2);

foreach($values as $val){
    echo "<div class='example'>".$val."</div>";
}

一旦你执行了 getArtistAlbum 函数,你会得到返回给你的数组......然后你可以迭代并相应地显示。

您也可以跳过执行两个循环的步骤,只需将 div 构建集成到 getArtistAlbum 函数本身......就像这样......但另一种方式更好,因为它产生更多可重用的代码

function getArtistAlbum($artist, $size){
    $xml = new SimpleXMLElement($xml);
    $xml = $xml->topalbums;

    foreach ($xml->album as $album) {
        $album_img =  $album->image[$size];
        $album_image = convert($album_img);
        $album_name =  $album->name;
        echo "<div class='example'>".$album_image."</div>
    }

}

编辑 2(根据您的评论)

对于一个分区...

$values = getArtistAlbum(artist, 2);

echo "<div class='example'>";
foreach($values as $val){
    echo $val;
}
echo "</div>";
于 2013-06-07T23:01:02.240 回答
-1

尝试这个

 $album_name='';

    foreach ($xml->album as $album) {
                        $album_img =  $album->image[$size];
                        $album_image = convert($album_img);
                        $album_name =  $album->name;
                        $values[] = $album_image;
                        return $values;

                        //echo instead of returning

                       $album_name.=$album_image;


                }

    echo $album_name;
于 2013-06-07T23:02:05.737 回答