I am getting some data from a database and am encoding it to 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 .= ',';
}
}
}
but instead of getting the json string in the format:
{"name:"joe", "age":"22", "etc":"etc"}
I’m getting every value duplicated because it is giving me the element name as being both the index of an associative and non-associative array. So I’m getting:
{"0":"joe", "name":"joe", "1":"22", "age":"22", "3":"etc", "etc":"etc"}
While I can still use the json. It is still twice the size that I want it to be and so not efficient. Is there anyway I can get the json_encode method to just give me the associative array inices as the json tags? (Wrong words to describe these things no doubt)
Many thanks
This is because you are using
fetch_array()(emphasis mine):Use
fetch_assoc()instead.