变量输出形式foreach循环

时间:2013-06-07 22:57:27

标签: php arrays variables for-loop return

我有一个来自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>";
}

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

PS:我对php非常新,所以请提前与我联系,提前谢谢

脚本来自此处:http://techslides.com/lastfm-api-with-php/。在我调用其他函数的其他PHP脚本中,例如artist-album,我得到一个带图像的返回,然后我可以设置它并输出我想要的内容。但我无法弄清楚如何输出上述内容。当我在

中调用它时
echo '<div class='example'>'.getArtistAlbums(artist,2).'</div>'; 

它只是回应了图像。

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

$artist_image = getArtist($artist,2); 

然后将$artist_imageechoclas等一起使用。

2 个答案:

答案 0 :(得分: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(根据您的评论)

对于一个div ...

$values = getArtistAlbum(artist, 2);

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

答案 1 :(得分:-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;
相关问题