JSON用PHP写出[重复]

Posted

技术标签:

【中文标题】JSON用PHP写出[重复]【英文标题】:JSON write out with PHP [duplicate] 【发布时间】:2020-06-03 20:04:51 【问题描述】:

我有一条 JSON 消息,我不知道如何写出 json 的一部分。

我试过了:

$data[0]->items[0]

$data[0]->name

$data->items[0]-name

$data[0]->items

等等……

JSON message:
 
   "items":[ 
       
         "name":"Knight",
         "id":26000000,
         "maxLevel":13,
         "iconUrls": 
            "medium":"https:\/\/api-assets.***royale.com\/cards\/300\/jAj1Q5rclXxU9kVImGqSJxa4wEMfEhvwNQ_4jiGUuqg.png"
         
      ,
       
         "name":"Archers",
         "id":26000001,
         "maxLevel":13,
         "iconUrls": 
            "medium":"https:\/\/api-assets.***royale.com\/cards\/300\/W4Hmp8MTSdXANN8KdblbtHwtsbt0o749BbxNqmJYfA8.png"
         
      
   ]

编辑:

这是控制器

如您所见,$data 数组已解码

看起来您的帖子主要是代码;请添加更多细节。天哪

     $token = "token";

     $url = "https://api.***royale.com/v1/cards";

     $ch = curl_init($url);

     $headr = array();
     $headr[] = "Accept: application/json";
     $headr[] = "Authorization: Bearer ".$token;
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headr);

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     $res = curl_exec($ch);
     $data = json_decode($res, true);
     curl_close($ch);

     return view('***', ['data' => $data]);

【问题讨论】:

这是 json 解码数组。我试着只举出“骑士”的例子 您实际尝试输出的数据的哪一部分,究竟是什么?假设您在此之前已经解码了 JSON,并且假设您确实想要第一项中的“名称”(看起来很可能),那么 $data->items[0]->name 可能会起作用。检查您是否了解 php 中的对象属性语法和数组访问语法——这实际上只是一个 PHP 语法错误,JSON 与它没有直接关系。如果还是不行,那么请var_dump()PHP版本的变量,这样我们就可以看得更清楚了。 你真的有一个函数被困在那个代码的中间吗顺便说一句绝对没有 ““真正的”不是我的工作”...尽管如此,您仍然可以 a) 去发现它的作用,和/或 b) 完成 $ 的 var_dump()正如我所建议的那样,data 变量来发现它的真实结构(这可能会让你想知道为什么它是这样的结构,这会让你回到 json_decode 命令)。我和其他人在上面写的都不是一些简单的研究和简单的调试无法发现的信息。在这个网站上,我们发现自己一遍又一遍地重复相同的基本、可研究的东西。 @ADyson 说得好 【参考方案1】:

首先你必须decode你的JSON-StringPHP-Array然后你可以access it easily这样:

$json = '
   "items":[
      
         "name":"Knight",
         "id":26000000,
         "maxLevel":13,
         "iconUrls":
            "medium":"https:\/\/api-assets.***royale.com\/cards\/300\/jAj1Q5rclXxU9kVImGqSJxa4wEMfEhvwNQ_4jiGUuqg.png"
         
      ,
      
         "name":"Archers",
         "id":26000001,
         "maxLevel":13,
         "iconUrls":
            "medium":"https:\/\/api-assets.***royale.com\/cards\/300\/W4Hmp8MTSdXANN8KdblbtHwtsbt0o749BbxNqmJYfA8.png"
         
      ,
      
         "name":"Goblins",
         "id":26000002,
         "maxLevel":13,
         "iconUrls":
            "medium":"https:\/\/api-assets.***royale.com\/cards\/300\/X_DQUye_OaS3QN6VC9CPw05Fit7wvSm3XegXIXKP--0.png"
         
      ,
      
         "name":"Giant",
         "id":26000003,
         "maxLevel":11,
         "iconUrls":
            "medium":"https:\/\/api-assets.***royale.com\/cards\/300\/Axr4ox5_b7edmLsoHxBX3vmgijAIibuF6RImTbqLlXE.png"
         
      
   ]
';

$array = json_decode( $json, true ); // we receive an associative array because the second parameter is true

echo $array['items'][0]['name'];
echo $array['items'][1]['id'];

用法举例:

$token = "token";
$url = "https://api.***royale.com/v1/cards";
$ch = curl_init($url);

$headr = array();
$headr[] = "Accept: application/json";
$headr[] = "Authorization: Bearer ".$token;

curl_setopt($ch, CURLOPT_HTTPHEADER, $headr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$res = curl_exec($ch);
$data = json_decode($res, true);
curl_close($ch);

echo $data['items'][0]['name']; // echo the value of the key 'name' of the first element in items
echo $data['items'][1]['id']; // echo the value of the key 'id' of the second element in items
// you can also store them or do whatever you want

return view('***', ['data' => $data]);

或者像这样访问视图中的数据:

 $data['items'][0]['name'] 
 $data['items'][0]['id'] 

【讨论】:

我更新了我的主题,并向你展示了我的控制器。 $data 数组被 json 解码 您是否打算将 Nonsense 函数留在该代码中,或者至少发表评论建议将其删除? 你的意思是test_input吗?是的,这是一个不需要的功能,我将删除它

以上是关于JSON用PHP写出[重复]的主要内容,如果未能解决你的问题,请参考以下文章

加载多个 JSON 文件 [重复]

php生成三个数字并且任意两个不重复

PHP将带有一些(重复)元素的XML转换为Json到Json数组[重复]

PHP中的JSON缩进[重复]

PHP“漂亮打印”json_encode [重复]

使用 PHP 循环 JSON 响应 [重复]