php json_encode两次编码相同的数据

Joe*_*Joe 8 php json

我从数据库中获取一些数据并将其编码为json:

$json = "";
if($result = $dbc->query($query)) {
    $num = $result->num_rows;
    for($i = 0; $i < $num; $i++) {
        $row = $result->fetch_array();
        $json .= json_encode($row);
        if($i != ($num-1)) {
        $json .= ',';
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但不是以格式获取json字符串:

{"name:"joe", "age":"22", "etc":"etc"}
Run Code Online (Sandbox Code Playgroud)

我得到的每个值都是重复的,因为它给了我元素名称作为关联和非关联数组的索引.所以我得到了:

{"0":"joe", "name":"joe", "1":"22", "age":"22", "3":"etc", "etc":"etc"}
Run Code Online (Sandbox Code Playgroud)

虽然我仍然可以使用json.它仍然是我想要它的两倍大小,因此效率不高.无论如何,我可以让json_encode方法只给我关联数组作为json标签?(毫无疑问,用错误的词语来描述这些事情)

非常感谢

Pek*_*ica 24

这是因为你正在使用fetch_array()(强调我的):

mysqli_fetch_array()是mysqli_fetch_row()函数的扩展版本.除了将数据存储在结果数组的数字索引中之外,mysqli_fetch_array()函数还可以使用结果集的字段名作为键将数据存储在关联索引中.

fetch_assoc()改用.