【问题标题】:Get info from JSON file and turn it into a PHP String从 JSON 文件中获取信息并将其转换为 PHP 字符串
【发布时间】:2017-11-19 06:42:40
【问题描述】:

我想连接最后一个 fm API 并从 JSON 文件中提取信息。

示例文件:[最后一个 FM API JSON 文件][1]

在我的 php 文件中,我通过以下代码获得了正确的信息:

<?$get = file_get_contents('http://ws.audioscrobbler.com/2.0/?
method=artist.getinfo&artist=Ed 
Sheeran&api_key=63692beaaf8ba794a541bca291234cd3&format=json');
$get = json_decode($get);
foreach($get->artist->tags->tag as $tags) { $thetag = (array) $thetag;?>
<? echo $thetag['name'];?> 
<?} ?> 

目前,这将呼应该艺术家的每个单独标签,例如:轻松聆听和污垢

我想知道有什么方法可以创建一个包含 $thetag 的字符串,同时在其间放置一个逗号?

$newstring = "easy listening, grime"  

e.t.c

我的计划是创建字符串,然后使用 php 代码搜索我的数据库并显示标签列包含任何这些标签的记录。知道怎么可能吗?

[1]:http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=EdSheeran&api_key=63692beaaf8ba794a541bca291234cd3&format=json

【问题讨论】:

  • 请编辑您的问题,使代码部分看起来像代码(缩进四个空格)。此外,用 `` 标记文本中的代码。谢谢。
  • @JavierElices 有效果吗?
  • 您是认真地告诉我们您发布的代码有效吗?
  • @TimBrownlaw 你在干什么?我问哈维尔他们的要求是否正确。
  • @JohnMartyn,你的问题有一些应该是代码而不是代码的部分。你知道如何编辑你的问题来解决它吗?

标签: php json audio webfm-api


【解决方案1】:

这是经过测试和工作的,是几种可能的方法之一......

<?php
$song_list_json = file_get_contents('http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Ed Sheeran&api_key=63692beaaf8ba794a541bca291234cd3&format=json');
$song_list = json_decode($song_list_json);

$name_tags = array();
foreach ($song_list->artist->tags->tag as $tags) {
    $name_tags[] = $tags->name;
}
$song_names = implode(', ',$name_tags);

// Do something with it...
echo $song_names;

【讨论】:

    【解决方案2】:

    您可以将 JSON 字符串解析为数组。然后使用array_map函数遍历$array['artist']['tags']['tag']数组,只得到name的值。

    // $json contains JSON string from API response to ws.audioscrobbler.com.
    $array = json_decode($json, true);
    $tags = '';
    
    if (!empty($array['artist']['tags']['tag'])) {
        $tags = array_map(
            function($tag) {
                return isset($tag['name']) ? $tag['name'] : '';
            }, $array['artist']['tags']['tag']);
        $tags = implode(', ', $tags);
    }
    

    【讨论】:

    • 已经尝试过了,但如果我再回显 $tags;我没有收到任何响应,并且出现错误 PHP 警告:非法字符串偏移“名称”。不太清楚为什么,我做错了什么?
    • @JohnMartyn,array_map 中的内部函数将 return $tag['name']; 替换为 return isset($tag['name']) ? $tag['name'] : '';
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多