Php 如何在1页中使用2个JSON文件

Php 如何在1页中使用2个JSON文件,php,json,foreach,Php,Json,Foreach,我尝试使用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_Multibot

我尝试使用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始终包含我将添加的项目/声音


感谢您抽出时间。

建议:您可以重新格式化声音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  
    }

?>


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

“我无法使它工作”你是什么意思?这应该是如何工作的,它是如何不工作的?良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您为自己的利益调试代码。您可能会被要求在几周/几个月内修改此代码,最终您将感谢我。而且您不需要在每一行上启动PHP解释器。仅去除所有这些噪声就可以使您的代码更具可读性,更易于维护!我不明白为什么json需要改变,你怎么能用它来获得“声音链接”呢?为了避免这种格式,json加载为关联数组,你可以很容易地用声音id直接获得声音url,比如:sounds[“CID_475_Athena_Commando_M_Multibot”]你明白了吗?我没有做到这一点,也许是我的错,因为或显示全部,或给出错误:/