2016-07-15 15 views
0

我需要在PHP中創建一個如下所示的JSON數組。 該數組需要用PHP While循環創建。用正確的格式創建索引的JSON

[{ 
    "latitude":"124", 
    "longitude":"", 
    "altitude":"87654", 
    "title":"test3", 
    "description":"This is a test 3", 
    "urlidle":"0", 
    "urlselected":"0" 
}, { 
    "latitude":"1ert", 
    "longitude":"67", 
    "altitude":"9", 
    "title":"tes3456", 
    "description":"This is a test 123", 
    "urlidle":"www.demo.blah", 
    "urlselected":"0demo.blah" 
}] 

我實現的PHP循環如下所示。

$poi=array(); 
while ($row = $output->fetch_array(MYSQLI_ASSOC)) { 

    $poi[$x]['latitude'] = $row['lat']; 
    $poi[$x]['longitude'] = $row['long']; 
    $poi[$x]['type'] = $row['type']; 
    $poi[$x]['title'] = $row['title']; 
    $poi[$x]['description'] = $row['desc']; 
    $poi[$x]['urlidel'] = $row['url1']; 
    $poi[$x]['urlselected'] = $row['url2']; 
    $x++; 
} 

,並且可以通過JS的for循環讀取方法

var jqxhr = $.getJSON(serverUrl, function(data) { 

    loadPoisFromJsonData(data); 

} 

但它似乎是工作

凡SERVERURL是相呼應的JSON的PHP文件。

我需要JSON讀取如下。

function loadPoisFromJsonDataFn(poiData) { 

    for (var i = 0; i < poiData.length; i++) { 
     var singlePoi = { 
      "id": poiData[i].id, 
      "latitude": parseFloat(poiData[i].latitude), 
      "longitude": parseFloat(poiData[i].longitude), 
      "altitude": parseFloat(poiData[i].altitude), 
      "title": poiData[currentPlaceNr].name, 
      "description": poiData[i].description, 
      "urlidle": poiData[i].urlidle, 
      "urlselected": poiData[i].urlselected 
     }; 

    } 
} 

回答

1

您應該使用json_encode()後的數據已被添加到陣列

$poi=array(); 
$x = 0; 
while ($row = $output->fetch_array(MYSQLI_ASSOC)) { 

    $poi[$x]['latitude'] = $row['lat']; 
    $poi[$x]['longitude'] = $row['long']; 
    $poi[$x]['type'] = $row['type']; 
    $poi[$x]['title'] = $row['title']; 
    $poi[$x]['description'] = $row['desc']; 
    $poi[$x]['urlidel'] = $row['url1']; 
    $poi[$x]['urlselected'] = $row['url2']; 
    $x++; 
} 
print_r($poi); 
echo json_encode($poi); 

你並不需要在JS再次循環了。結果(poiData)已經是JSON

var jqxhr = $.getJSON(serverUrl, function(data) { 

    console.log(data); 
    //See it in Firebug, it's already a JSON. 

    alert(JSON.stringify(data)); 
    //If you want to see it as string 

} 
+0

我已經使用json_encode()。 我的問題是,它是否可以通過索引,如JS –

+0

裏面的poiData [i] .id這樣的索引你有回聲嗎?如果你已經做過,嘗試使用'return'。 – rmondesilva

0
$poi=array(); 
while ($row = $output->fetch_array(MYSQLI_ASSOC)) { 
$poi1 = array(); 
    $poi1['latitude'] = $row['lat']; 
    $poi1['longitude'] = $row['long']; 
    $poi1['type'] = $row['type']; 
    $poi1['title'] = $row['title']; 
    $poi1['description'] = $row['desc']; 
    $poi1['urlidel'] = $row['url1']; 
    $poi1['urlselected'] = $row['url2']; 
    $x++; 
$poi = $poi1 



} 

echo json_encode($poi); 

    enter code here