【问题标题】:How to use 2 jsons file in 1 page如何在 1 页中使用 2 个 jsons 文件
【发布时间】:2019-11-26 13:51:21
【问题描述】:

我正在尝试使用 2 个 json 来获取不同的信息。

一个有主要信息,另一个json有“音频”文件。

我的主要 json 是这样的:

{  "featured": [
    {
      "id": "CID_475_Athena_Commando_M_Multibot",
      "name": "Líder da Equipe Mech",
      "image": "--IMAGE LINK--"
    },
    {
      "id": "Pickaxe_ID_236_Multibot1H",
      "name": "Cutelos Duplos",
      "image": "--IMAGE LINK--"
    },
]
}

另一个是

{  "sounds": [
    {
      "id": "CID_475_Athena_Commando_M_Multibot",
      "soundmp3": "--SOUND LINK--"
    },
    {
      "id": "Pickaxe_ID_236_Multibot1H",
      "soundmp3": "--SOUND LINK--"
    }
]
}

在我正在使用的 .php 中,但我无法让它工作。

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "---JSON URL---",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => false,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
));

$response = curl_exec($curl);
$getinfo = json_decode($response, true);


$string = file_get_contents("sounds_id.json");
$json_sons = json_decode($string, true);

?>
<?php 
foreach ( $getinfo['featured'] as $jsonmain ) 
    foreach ( $json_sons['sons'] as $jsonsounds ) :  ?>

<?php
        if ($jsonmain['id'] == $jsonsons['id']) { ?>
            <?php echo $jsonmain['name']; ?> has the sound <a href="<?php echo $jsonsons['sounds']['soundmp3'] ?>">here.</a>

?>
<?php
        }
?>

<?php endforeach; ?>


问题是它的主要 json 来自外部 api,因此我无法在其中添加音频。并且json整天都在变化。所以在我的“声音”json 中总是有我将要添加的项目/声音。

感谢您的宝贵时间。

【问题讨论】:

  • “我无法让它工作”你是什么意思?这应该如何工作,又如何不工作?
  • 良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • 而且您不需要在每一行都启动&lt;?php 和停止?&gt; PHP 解释器。单独消除所有这些噪音将使您的代码更具可读性和更易于维护

标签: php json foreach


【解决方案1】:

建议:您可以重新格式化您的声音 JSON 文件,例如:

{
 "CID_475_Athena_Commando_M_Multibot" : "Sound Link"
}

然后你可以将它加载到数组中

<?php
   $response = curl_exec($curl);
   $getinfo = json_decode($response, true);


   $string = file_get_contents("sounds_id.json");
   $json_sons = json_decode($string, true);

   foreach ( $getinfo['featured'] as $jsonmain ) {
      // HERE Your logic and 
      // you can get sound 
     $soundId = $jsonmain["id"];
     $soundUrl = isset($json_sons[$soundId])?$json_sons[$soundId] : null ; 
     // complete your logic  
    }

?>

我没有测试它,但希望这个想法对你有帮助

【讨论】:

  • 您好!我不明白为什么 json 需要改变,你怎么能得到“声音链接”?
  • 避免使用foreach
  • 通过这种格式 json 加载为关联数组,您可以轻松地直接获取带有声音 id 的声音 url EX :sounds["CID_475_Athena_Commando_M_Multibot"] 你明白了吗?
  • 我无法做到这一点,也许是我的错,因为要么显示全部,要么给出错误:/
猜你喜欢
  • 2016-10-01
  • 2016-05-27
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多