使用JSON创建数组


Create Array with JSON

我正在用谷歌地图api创建一个地图。

基本上,调用任何标记的数组结构像这样:
var station = [
['SEDRANO DI SAN QUIRINO (PN)',46.048887,12.657924,'Via Maniago, 28','Tel. 0434 918900','sedrano-di-san-quirino.jpg',true,true,false,false,false,false,false],
['CORTINA D''AMPEZZO (BL)',46.541307,12.132348,'Via dello Stadio, 7','Tel.  0436 869133','cortina-dampezzo.jpg',true,true,false,false,false,true,false],
['POINCICCO DI ZOPPOLA (PN)',45.948725,12.745332,'Via Cusano, 14','Tel. 0434 574831','poinciccio-di-zoppola.jpg',true,true,false,false,false,true,false]
];

现在,我会创建一个数组json调用,所以…第一步我调用标记与php,并把它们放在json_encode

$sth = mysql_query("SELECT * FROM markers");
$rows = array();
 while($r = mysql_fetch_assoc($sth)) {
  $rows[] = $r;
 }
print json_encode($rows);
结果

[{"city":"SEDRANO DI SAN QUIRINO (PN)","lat":"46.0489","lng":"12.6579","address":"Via Maniago, 28","phone":"Tel. 0434 918900","thumb":"http:'/'/www.costantin.com'/images'/thumb'/maps'/sedrano-di-san-quirino.jpg","top-verde":"false","top-diesel":"false","gpl":"false","lavaggio":"false","cafe":"false","verde":"true","diesel":"true","id":"1"},{"city":"CORTINA D'AMPEZZO (BL)","lat":"46.5413","lng":"12.1323","address":"Via dello Stadio, 7","phone":"Tel. 0436 869133","thumb":"http:'/'/www.costantin.com'/images'/thumb'/maps'/cortina-dampezzo.jpg","top-verde":"false","top-diesel":"false","gpl":"false","lavaggio":"true","cafe":"false","verde":"true","diesel":"true","id":"2"},{"city":"POINCICCO DI ZOPPOLA (PN)","lat":"45.9487","lng":"12.7453","address":"Via Cusano, 14","phone":"Tel. 0434 574831","thumb":"http:'/'/www.costantin.com'/images'/thumb'/maps'/poinciccio-di-zoppola.jpg","top-verde":"false","top-diesel":"false","gpl":"false","lavaggio":"true","cafe":"false","verde":"true","diesel":"true","id":"3"}]

第二步我调用jquery getJSON数据,像这样…

$.getJSON( "markers.php", function( data ) {
    var station = [];
  $.each( data, function( key, val ) {
    station.push( data );
  });
});

但这是完全没有工作,所以…我该怎么做呢?所以…有办法实现这个结构吗?

  var station = [
    ['SEDRANO DI SAN QUIRINO (PN)',46.048887,12.657924,'Via Maniago, 28','Tel. 0434 918900','sedrano-di-san-quirino.jpg',true,true,false,false,false,false,false],
    ['CORTINA D''AMPEZZO (BL)',46.541307,12.132348,'Via dello Stadio, 7','Tel.  0436 869133','cortina-dampezzo.jpg',true,true,false,false,false,true,false],
    ['POINCICCO DI ZOPPOLA (PN)',45.948725,12.745332,'Via Cusano, 14','Tel. 0434 574831','poinciccio-di-zoppola.jpg',true,true,false,false,false,true,false]
    ];
var stations = []; //You need an external variable to hold all the stations
$.getJSON( "markers.php", function( data ) {
    //var station = []; //Don't need this here
    //"data" is an array, not a key/value object
    /*$.each( data, function( key, val ) {
        //You are adding the JSON "data" array here, not the values
        station.push( data );
    });*/
    //Remember "data" is a JSON array, not object
    for (var i = 0; i < data.length; i++) { 
        var station = []; //Temporary variable to hold station data
        //Iterate over the current station object
        $.each(data[i], function(key, value) { 
          station.push(value); //You're not interested in the key
        });
        stations.push(station); //Add station to array of all stations
    }
});

如果你只关心数组的值,不要获取关联数组,试试这个:

$rows = array();
 while($r = mysql_fetch_array($sth)) {
  $rows[] = array_values($r);
 }
print json_encode($rows);