如何使用数组的json_encode函数

时间:2018-11-08 23:29:52

标签: javascript php json

我想从php数组中选择使用json_encode函数创建的对象的特定行。

  while($locations=$req->fetch()){
    $t = $locations->titre;
    $la = $locations->latitude;
    $lo = $locations->longitude;
    $typ = $locations->type;
    $ep = $locations->couleur;
    $matrice[$i] = array($t, $la, $lo, $ep);
    $i=$i+1;
  }

var locations = <?php echo json_encode($matrice); ?>;
locations[0] = ['ma position actuelle', 0, 0, 0];

//console.log(Object.keys(locations));
//console.log(locations);

var centerLat=0.0, centerLong=0.0;
for (var i=1; i<Object.keys(locations).length; i++) {
  centerLat+=locations[i][1];
	centerLong+=locations[i][2];
}

我想选择“位置”的第二个和第三个元素,但是循环内的语法是错误的。有谁有主意。 谢谢

2 个答案:

答案 0 :(得分:0)

首先,您应该这样做:

var locations = JSON.parse(<?php echo json_encode($matrice); ?>);

然后console.log(locations.toString());检查您的数据

之后,我认为您正在寻找Array.prototype.unshift()在数组的开头添加元素:

locations.unshift(['ma position actuelle', 0, 0, 0]);

({locations[0] = ['ma position actuelle', 0, 0, 0]仅替换数组的第一项)

然后更改您的循环

for (var i=1; i<Object.keys(locations).length; i++)

var i = 1, ln = locations.length;
for (i;i<ln;i++)

答案 1 :(得分:0)

您可以像这样在JS中访问JSONArray(或任何Array)中的任何项目:

object[i]

在您的示例中,如果您想获取第二和第三个元素:

for (...) {
  var longitude = locations[i][1];
  var latitude = locations[i][2];
}

但是,我建议您使用键并创建JSONObjects而不是JSONArrays,就像这样:

  $locations = array();

  while($locations=$req->fetch()){

    $location = array(
      'titre' => $locations->titre,
      'latitude' => $locations->latitude,
      'longitude' => $locations->longitude,
      ... etc
    );

    $locations[] = $location;

  }

这样,您将最终得到一个充满JSONObjects的漂亮JSONArray,并且可以像这样从JS调用它们:

//locations is a JSONArray
var locations = <?php echo json_encode($matrice); ?>; 
//locations[0] is a JSONObject
var latitude = locations[0].latitude;
var latitude = locations[0].longitude;