1

PHPを使用して連想配列を作成しようとしています。jsonファイルを呼び出すajaxスクリプトを使用しています。

次のPHPコードを使用してスクリプトをテストしました。

$testLocs = array(
'loc5' => array( 'info' => 'Some random info', 'lat' => 0, 'lng' => 60 ),
'loc6' => array( 'info' => 'Some random info', 'lat' => 0, 'lng' => 40.345 )
);
echo json_encode($testLocs);

エコーする:

{"loc1":{"info":"Some random info","lat":0,"lng":60},"loc1":{"info":"Some random info","lat":0,"lng":40.345}}

ajaxコードは正しく機能します。今、私はデータベースから情報を取得するPHPスクリプトを書き込もうとしています。私のPHPコードは以下のとおりです

$query = "Select * from table";
$result = mysql_query($query);

$json_data = array();

while ($row = mysql_fetch_assoc($result)) {
$id = $row['id'];
$lat = $row['lat'];
$lon = $row['lon'];
$page = $row['page'];
array_push($json_data, array('info' => 'Some random info', 'lat' => $lat, 'lng' => $lon)); 
}


echo json_encode($json_data);

エコーする:

{"info":"Some random info","lat":"-31.9522","lng":"115.8614"},{"info":"Some random info","lat":"40.7842","lng":"-73.8422"}

'loc' =>各配列の前に配置する方法がわかりません。ajaxはlocNUMを一意のIDとして使用しています。

ありがとうございました

4

2 に答える 2

1

試す

$json_data = array();
$i = 0;

while ($row = mysql_fetch_assoc($result)) {
$id = $row['id'];
$lat = $row['lat'];
$lon = $row['lon'];
$page = $row['page'];
$json_data["loc" . ($i++)] = array('info' => 'Some random info', 'lat' => $lat, 'lng' => $lon); 
}

の代わりにarray_pusharray_pushハッシュ操作関数としてではなく、純粋な配列関数として意図されています。

于 2013-02-10T09:31:56.767 に答える
0

$row['id']がlocNUMの一意のIDである場合:

$json_data["loc".$id] = array('info' => 'Some random info', 'lat' => $lat, 'lng' => $lon)

array_push()$array[] = $var;は、インクリメントされた数字キーを提供すると同じです。

于 2013-02-10T09:34:07.757 に答える