从mysql结果创建数组?

时间:2015-08-04 20:06:32

标签: php mysql arrays

我正在尝试创建一个数组();来自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"}]

我不知道如何在数组中实现我想要的输出。

有人可以就此提出建议吗?

任何帮助将不胜感激。

3 个答案:

答案 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;