我正在尝试创建一个数组();来自mysql结果/查询。
数组输出应该如下所示:
{"1":{"info":"Rooz","lat":51.503363,"lng":-0.127625},
"2":{"info":"Michelle","lat":51.503343,"lng":-0.127567}}
所以我试着这样做:
$sql = "SELECT id, name, lat, lng FROM positions ORDER BY id";
$query = mysqli_query($db_conx, $sql);
$productCount = mysqli_num_rows($query); // count the output amount
$testLocs = array();
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$testLocs[] = $row;
}
print_r(json_encode($testLocs));
但上面代码的OUTPUT是这样的:
[{"id":"1","name":"Rooz","lat":"51.5033630","lng":"-0.1276250"},{"id":"2","name":"Michelle","lat":"51.503343","lng":"-0.127567"}]
我不知道如何在数组中实现我想要的输出。
有人可以就此提出建议吗?
任何帮助将不胜感激。
答案 0 :(得分:3)
更改
$testLocs[$row["id"]] = array("info"=>$row["name"], "lat"=>$row["lat"], "lng"=>$row["lng"]);
到
perl -lane '
if ($F[0] eq $id) {
$keep = $_
} else {
$id = $F[0];
print $keep if defined $keep;
print
}
}{ print $keep
' < input.txt > output.txt
答案 1 :(得分:1)
除了@ Sean的回答:您还可以使用(array) $row
而不是使用每个键手动创建数组:
$testLocs[$row["id"]] = (array) $row;
如果您以后更改查询,则无需更改此行。
答案 2 :(得分:0)
PHP数组不是以与JSON对象不同的方式构建的:
$testLocs[$row["id"]] = $row;
如果您故意要从$id
中排除$row
属性,可以先将其从$row
数组中删除。
$id = $row["id"];
unset($row["id"]);
$testLocs[$id] = $row;