2016-07-15 7 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++; 
} 

、どの方法

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

    loadPoisFromJsonData(data); 

} 

でループのためにJSで読み取ることができる。しかし、それはSERVERURLはJSONをエコーPHPファイルである

を働いているように見えるdoes notの。

以下のように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

データあなたはJSで再びループにそれを必要としない配列

$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); 

に追加された後は、json_encode()を使用する必要があります。その結果(poiData)は、すでに私はすでにjson_encodeを使用している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

()です。 私の質問は、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 
関連する問題