从json数据中删除最终的逗号

时间:2018-01-22 19:45:08

标签: php arrays json

我有一个问题让我头疼了几天,对于那些对json数据有更多了解的人来说,这可能是一个非常简单的解决方案。希望有人可以提供帮助。

首先,我使用的是脚本,但这并不重要,因为我使用的是空白应用程序,我在代码中使用的唯一脚本宏是数据库查找,正如您将看到的那样。

我实际上是从数据库中选择多个字段,使用json将它们放置在Google Maps API的函数中(纬度和经度,名字和姓氏用于描述)。它完美地工作,但是在整个生成的数组中,它会自动在每行的末尾放置一个逗号。我无法理解如何删除它。我已经尝试了 rtrim trim ,但是它们都没有工作,但是如果这有意义的话,它们确实从整个结果的末尾开始取值?

如果这非常简单,请提前道歉!

我的代码如下所示:

$LatLong = array();
$i = 0;
$llresult = '';

sc_lookup(ds,"SELECT latitude,longitude,first_name,surname FROM staff WHERE active=1");

for($i=0;$i<count({ds});$i++){
    $LatLong[0][] = "var Marker = new google.maps.Marker({ position: {lat: ". {ds[$i][0]} .", lng: ". {ds[$i][1]} ."}, map: map, title: '". {ds[$i][2]} ." ". {ds[$i][3]} ."' });";
}



//include $result data
$llresult = json_encode($LatLong);


//$result treatment
$llresult = str_replace("[[","", $llresult);
$llresult = str_replace("]]","", $llresult);
$llresult = str_replace('"','', $llresult);

?>

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Locations</title>
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 90%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>

    function initMap() {
        var myLatLng = {lat: 37.3320045, lng: -122.0329699};

        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 12,
            center: myLatLng
        });

        <?php echo $llresult; ?>

    }
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=initMap">
    </script>
  </body>
</html>

<?php

我应该补充一点,回显$ llresult的输出显示如下:

  

var Marker = new google.maps.Marker({position:{lat:37.3320045,lng:   -122.0329699},map:map,title:'Joe Bloggs'});, var Marker = new google.maps.Marker({position:{lat:37.3320045,lng:-122.0329699},   地图:地图,标题:'Jane Doe'});

1 个答案:

答案 0 :(得分:3)

划分代码和数据的简单方法是:

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

sc_lookup(ds,"SELECT latitude,longitude,first_name,surname FROM staff WHERE active=1");

for($i=0;$i<count({ds});$i++){
    $LatLong[] = [
       'lat' => $ds[$i][0],
       'lng' => $ds[$i][1],
       'title' => $ds[$i][2] . " ". $ds[$i][3]
    ];
}

所以,现在在$LatLong中,您将存储坐标和标题。现在,到javascript:

var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 12,
    center: myLatLng
});

var latLong = <?php echo json_encode($LatLong)?>;
// iterate over latLong and create markers:
for (var key in latLong) {
    new google.maps.Marker({ 
        position: {lat: latLong[key]['lat'], lng: latLong[key]['lng']}, 
        map: map, 
        title: latLong[key]['title']
    });
}