使用php编码json?

oso*_*sos 6 php json

我想得到json与PHP编码功能如下

<?php 
  require "../classes/database.php";

  $database = new database();
  header("content-type: application/json");
  $result = $database->get_by_name($_POST['q']);   //$_POST['searchValue']

  echo '{"results":[';
  if($result)
  {
     $i = 1;
     while($row = mysql_fetch_array($result))
     {
        if(count($row) > 1) 
        {
           echo json_encode(array('id'=>$i, 'name' => $row['name']));
           echo ",";
        }
        else 
        {
           echo json_encode(array('id'=>$i, 'name' => $row['name']));
        }
        $i++; 
     }
  }
  else
  {
     $value = "FALSE";
     echo json_encode(array('id'=>1, 'name' => ""));  // output the json code
  }

  echo "]}";
Run Code Online (Sandbox Code Playgroud)

我希望输出json是这样的

{"results":[{"id":1,"name":"name1"},{"id":2,"name":"name2"}]}
Run Code Online (Sandbox Code Playgroud)

但输出json如下所示

{"results":[{"id":1,"name":"name1"},{"id":2,"name":"name2"},]}
Run Code Online (Sandbox Code Playgroud)

当你意识到最后有逗号时,我想删除它所以它可以是正确的json语法,如果我删除了echo ",";当有多个结果时json会生成这样的{"results":[{"id":1,"name":"name1"}{"id":2,"name":"name2"}]}并且语法也是错误的

希望每个人都明白我的意思,任何想法都会受到赞赏

Jef*_*ert 13

如果我是你,我不会json_encode每个单独的数组,但将数组合并在一起,然后json_encode合并到最后的合并数组.下面是使用5.4的短数组语法的示例:

$out = [];
while(...) {
  $out[] = [ 'id' => $i, 'name' => $row['name'] ];
}
echo json_encode($out);
Run Code Online (Sandbox Code Playgroud)


Mar*_*c B 9

将json_encoding作为最后一步.纯粹用PHP构建数据结构,然后在最后编码该结构.做中间编码意味着你基本上构建自己的json字符串,这总是很棘手,很可能"破坏".

$data = array();
while ($row = mysql_fetch_array($result)) {
   $data[] = array('id'=>$i, 'name' => $row['name']);
}
echo json_encode($data);
Run Code Online (Sandbox Code Playgroud)