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

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 database

var_dump($post);

for each 循环打印 3 个结果,但我的问题是,根据下面的 json,只有一个结果是 var 转储的。我想知道其他 2 个结果隐藏在哪里。请问我如何根据上面的json格式获得剩余的2个结果


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


波斯汪
浏览 376回答 3
3回答

Qyouu

这是因为你总是将$params变量设置为一个新数组,所以它变成了一个新数组,当你这样做时,$post = json_encode($params);你总是得到最后一个索引结果。基本上,您应该$params只在循环之外初始化数组。

慕少森

您的代码工作正常,只需更改以下两行。1$entries['content_no'] = data['content_no'];到$entries['content_no'] = $data['content_no']; //were only missing a $ variable sign2$post = json_encode($params);到$post[] = json_encode($params); //you defined an array but you were not pushing data in to the array

慕尼黑的夜晚无繁华

您的代码中有一些错误(我假设 - 如果您有不同的结果,请忽略它们),但主要是您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}]}"
打开App,查看更多内容
随时随地看视频慕课网APP