返回有效的Json数组

时间:2017-02-27 21:58:29

标签: php arrays json

我是Json和数组的新手,我只是想知道是否有人能够纠正我尝试过的仍然输出无效字符串的代码。

$json = array(
    'posts' => array(),
);

    while($row = mysqli_fetch_array($result)) {
        $posts = array();
        $posts['count'] = $rowcount;
     $posts['streamitem_id'] = $row['streamitem_id'];


$json['posts'] = $posts;
echo json_encode($json);
}

我使用了http://jsonlint.com/并在第6,11和16行 } {上发布了来自firebug错误的返回数据

  {
    "posts": {
        "count": 4,
        "streamitem_id": "1976"
    }
} {
    "posts": {
        "count": 4,
        "streamitem_id": "1980"
    }
} {
    "posts": {
        "count": 4,
        "streamitem_id": "1099"
    }
} {
    "posts": {
        "count": 4,
        "streamitem_id": "1178"
    }
}

3 个答案:

答案 0 :(得分:2)

有些人已经评论过有效的答案,但我相信array_push是最有效的方法,而不是一遍又一遍地重新定义$ posts变量。

$json = array(
    'posts' => array(),
    'count' => $rowcount
);

PS:我注意到你在每个帖子数组中都放了$ rowcount。如果不是这样,我建议进行以下更改:

    array_push($json['posts'], $array(
        'streamitem_id' => $row['streamitem_id']
        )
    );

然后在while循环中:

console.log(json['count']);

这样,您可以参考帖子计数,这不会浪费内存。

Named range = Offset(Plan1!A1;0;0;8-CountBlank(Other named range))

答案 1 :(得分:1)

把它放在循环之外,你会覆盖并立即回显每个值

内循环

      $posts[] = ["count"=> $rowcount,"streamitem_id"=>$row['streamitem_id']);

循环后

  $json['posts'] = $posts;
  echo json_encode($json);

答案 2 :(得分:1)

我想你想要这个:

$posts = array();
$rowcount = 0;
while ($row = mysqli_fetch_array($result)) {
    $posts[] = array(
       'count' => $rowcount,
       'streamitem_id' = $row['streamitem_id'],
    );
    $rowcount++;
}

$json['posts'] = $posts;
echo json_encode($json);