为了账号安全,请及时绑定邮箱和手机立即绑定

json响应在php中显示一个结果而不是三个

json响应在php中显示一个结果而不是三个

PHP
波斯汪 2022-01-14 16:07:50
JSON 响应只转储一个结果而不是三个。我需要以以下 json 格式获取 json 响应。它包含三个结果{"entries":[{"id":"1A","content_no":101},            {"id":"1B","content_no":102},            {"id":"1C","content_no":103}]}当我根据 json 结果运行下面的代码时:// curl result//echo  $result;$json = json_decode($result, true);// initial post variable$post= [];foreach($json['entries'] as $data){  // printed three result successfilly in for each loop  $id = $data['id'];  $content_no = $data['content_no'];  // Now to get the result in the required json format and dump it or echo it outside for each loop  $entries = array();  $entries['id'] = $data['id'];  $entries['content_no'] = data['content_no'];  $params = array();  $params['entries'][] = $entries;  $post = json_encode($params);}// send post result in json format to databasevar_dump($post);for each 循环打印 3 个结果,但我的问题是,根据下面的 json,只有一个结果是 var 转储的。我想知道其他 2 个结果隐藏在哪里。请问我如何根据上面的json格式获得剩余的2个结果{"entries":[{"id":"1C","content_no":103}]}
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

这是因为你总是将$params变量设置为一个新数组,所以它变成了一个新数组,当你这样做时,$post = json_encode($params);你总是得到最后一个索引结果。

基本上,您应该$params只在循环之外初始化数组。


查看完整回答
反对 回复 2022-01-14
?
慕少森

TA贡献2019条经验 获得超9个赞

您的代码工作正常,只需更改以下两行。

1

$entries['content_no'] = data['content_no'];

$entries['content_no'] = $data['content_no']; //were only missing a $ variable sign

2

$post = json_encode($params);

$post[] = json_encode($params); //you defined an array but you were not pushing data in to the array



查看完整回答
反对 回复 2022-01-14
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

您的代码中有一些错误(我假设 - 如果您有不同的结果,请忽略它们),但主要是您json_encode()在循环中的值而不是构建数据列表然后对其进行编码(更改注释代码中的错误)...


$json = json_decode($result, true);


$post= [];

foreach($json['entries'] as $data){   // Change from $json_result


    // printed three result successfilly in for each loop

    $id = $data['id'];

    $content_no = $data['content_no'];



    // Now to get the result in the required json format and dump it or echo it outside for each loop

    $entries = array();

    $entries['id'] = $data['id'];

    $entries['content_no'] = $data['content_no'];   // Change from data['content_no'];


    $post['entries'][] = $entries;  // Just add new data to $post instead


}

// Encode total of all data

$post = json_encode($post);


var_dump($post);

给...


string(100) "{"entries":[{"id":"1A","content_no":101},

    {"id":"1B","content_no":102},

    {"id":"1C","content_no":103}]}"


查看完整回答
反对 回复 2022-01-14
  • 3 回答
  • 0 关注
  • 375 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信