Mattia Guatta
Mattia Guatta

Reputation: 11

PHP/JSON Array double quotes

I need help with the JSON array created by PHP. This is the example code

[{"flightnum":"IV7050","deptime":"2016-06-01 16:47:00","arrtime":"17:01:39","gs":"397","alt":"26955","lat":"41.340347359635","lng":"-72.46185414378","phasedetail":"Climbing","timeremaining":"07:45:00","online":"No","depicao":"KJFK","arricao":"LFPO","heading":"68","distremain":"3080","aircraftname":"B747-400",

"zone":**--THIS-->"<--THIS--**[{"Latitude":34.647995,"Longitude":-86.738549}]**--THIS-->"<--THIS--**,

"code":"IV","pilotid":"IV0018","firstname":"Mattia","lastname":"test","deplat":"40.6398","deplng":"-73.7789","arrlat":"48.7253","arrlng":"2.35944","route_details":[],"percomplete":2.32,"distremaining":"3080","pilotname":"Mattia"}]

I have added a field called "zone" but how do I remove the double quotes marked only for this field ?

Upvotes: 0

Views: 266

Answers (2)

Mattia Guatta
Mattia Guatta

Reputation: 11

thanks to all for your answer, i have solved the problem by using json_decode before insert data in array. but now a have another question,

how can add a liverefresh for polyline on this code?

I already have a liverefresh function, but for the polyline don't work

    var flightMarkers = [];
    var routeMarkers = [];
    var flightPath = null;
    var depMarker = null, arrMarker = null;
    var info_window= null;
    var run_once = false;
    var mapOptions = {
    zoom: 4,
    center: new google.maps.LatLng(47.437047,19.248515),
    mapTypeId: google.maps.MapTypeId.ROADMAP };
    var map = new google.maps.Map(document.getElementById("acarsmap"), mapOptions);
    var weatherLayer = new google.maps.weather.WeatherLayer({ temperatureUnits: google.maps.weather.TemperatureUnit.CELSIUS }); weatherLayer.setMap(null);
    var cloudLayer = new google.maps.weather.CloudLayer(); cloudLayer.setMap(null)
    setWindSpeed(google.maps.weather.WindSpeedUnit.KILOMETERS_PER_HOUR)
    var defaultOptions = {
    autozoom: true,
    refreshTime: 5000,
    autorefresh: true
    };
             function toggleClouds() {
             cloudLayer.setMap(cloudLayer.getMap() ? null : map);
             }
             function toggleIcons() {
             weatherLayer.setMap(weatherLayer.getMap() ? null : map);
             }
             function setWindSpeed(units) {
             weatherLayer.setOptions({'windSpeedUnits': units});
             }
    var options = $.extend({}, defaultOptions, acars_map_defaults);




    // They clicked the map
    google.maps.event.addListener(map, 'click', function()
    {
        clearPreviousMarkers();
    });

    liveRefresh();
    if(options.autorefresh == true)
    {
        setInterval(function () { liveRefresh(); }, options.refreshTime);
    }

    function liveRefresh()
    {
        $.ajax({
            type: "GET",
            url: url + "/action.php/acars/data_test",
            dataType: "json",
            cache: false,
            success: function(data) 
            {
                populateMap(data);
            }
        });
    };

    function populateMap(data)
    {
        clearMap();
        $("#pilotlist").html("");

        if (data.length == 0) {
            return false;
        }

        var lat, lng;

        var details, row, pilotlink;
        var bounds = new google.maps.LatLngBounds();

        for (var i = 0; i < data.length; i++) 
        {
            if(data[i] == null || data[i].lat == null || data[i].lng == null
                || data[i].lat == "" || data[i].lng == "") {
                continue;
            }

            lat = data[i].lat;
            lng = data[i].lng;


            if(i%2 == 0)
                data[i].trclass = "even";
            else
                data[i].trclass = "odd";

            // Pull ze templates!
            var map_row = tmpl("acars_map_row", {flight: data[i]});
            var detailed_bubble = tmpl("acars_map_bubble", {flight: data[i]});

            $('#pilotlist').append(map_row);

            var pos = new google.maps.LatLng(lat, lng);

            var image = new google.maps.MarkerImage(url+"/lib/images/inair/"+data[i].heading+".png",
                    new google.maps.Size(41,41),
                    new google.maps.Point(0, 0),
                    new google.maps.Point(20, 20)               
                    );

            flightMarkers[flightMarkers.length] = new google.maps.Marker({
                position: pos,
                map: map,
                icon: image,
                flightdetails: data[i],
                infowindow_content: detailed_bubble
            });

            bounds.extend(pos);

            google.maps.event.addListener(flightMarkers[flightMarkers.length - 1], 'click', function() 
            {


                var focus_bounds = new google.maps.LatLngBounds();

                // Flight details info window
                info_window = new google.maps.InfoWindow({ 
                    content: this.infowindow_content,
                    position: this.position
                });

                info_window.open(map, this);


                var dep_location = new google.maps.LatLng(this.flightdetails.deplat, this.flightdetails.deplng);
                var arr_location = new google.maps.LatLng(this.flightdetails.arrlat, this.flightdetails.arrlng);


                depMarker = new google.maps.Marker({
                    position: dep_location,
                    map: map,
                    icon: depicon,
                    title: this.flightdetails.depname,
                    zIndex: 100
                });


                arrMarker = new google.maps.Marker({
                    position: arr_location,
                    map: map,
                    icon: arricon,
                    title: this.flightdetails.arrname,
                    zIndex: 100
                });


                focus_bounds.extend(this.position);

                var something = [];
                $.each( this.flightdetails.puntirotta, function( key, val ) {
                something.push(new google.maps.LatLng(val.Latitude, val.Longitude));
                });

//THIS IS THE POLYLINE I WOULD ADD TO LIVE REFRESH
                flightPath = new google.maps.Polyline({
                    path: something,
                    strokeColor: "#FF0000", 
                    geodesic : true,
                    strokeOpacity: 1.0, 
                    strokeWeight: 2
                });

                map.fitBounds(focus_bounds); 
                flightPath.setMap(map);

            });
        }

        // If they selected autozoom, only do the zoom first time
        if(options.autozoom == true && run_once == false)
        {
            map.fitBounds(bounds); 
            run_once = true;
        }
    }


    function clearPreviousMarkers()
    {
        if(info_window)
        {
            info_window.close();
            info_window = null;
        }

        if(depMarker != null)
        {
            depMarker.setMap(null);
            depMarker = null;
        }

        if(arrMarker != null)
        {
            arrMarker.setMap(null);
            arrMarker = null;
        }

        if(routeMarkers.length > 0)
        {
            for(var i = 0; i < routeMarkers.length; i++) {
                routeMarkers[i].setMap(null);
            }
        }

        routeMarkers.length = 0;

        if(flightPath != null)
        {
            flightPath.setMap(null);
            flightPath = null;
        }
    }

    function clearMap()
    {
        if(flightMarkers.length > 0)
        {
            for(var i = 0; i < flightMarkers.length; i++) {
                flightMarkers[i].setMap(null);
            }
        }

        flightMarkers.length = 0;

        if(routeMarkers.length > 0)
        {
            for(var i = 0; i < routeMarkers.length; i++) {
                routeMarkers[i].setMap(null);
            }
        }

        routeMarkers.length = 0;
    }

Upvotes: 1

Poiz
Poiz

Reputation: 7617

Using preg_replace, you could just remove the extra quotes but that is not really a solution. Yes; it will help but the issue is to find out why you have those Quotes in your string. So, the code below solves this issue; temporarily:

    <?php

        $json = '[
        {"flightnum":"IV7050","deptime":"2016-06-01 16:47:00","arrtime":"17:01:39","gs":"397","alt":"26955","lat":"41.340347359635",
        "lng":"-72.46185414378","phasedetail":"Climbing","timeremaining":"07:45:00","online":"No","depicao":"KJFK","arricao":"LFPO","heading":"68",
        "distremain":"3080","aircraftname":"B747-400",
        "zone":"[{"Latitude":34.647995,"Longitude":-86.738549}]",
        "code":"IV","pilotid":"IV0018","firstname":"Mattia","lastname":"test","deplat":"40.6398",
        "deplng":"-73.7789","arrlat":"48.7253","arrlng":"2.35944","route_details":[],
        "percomplete":2.32,"distremaining":"3080","pilotname":"Mattia"}
        ]';


        $json   = preg_replace("#(\")(\[\{)(.*)(\}\])(\")#", "$2$3$4",  $json);

        var_dump(json_decode($json));

OUTPUT OF THE VAR DUMP

        array (size=1)
          0 =>
            object(stdClass)[1]
              public 'flightnum' => string 'IV7050' (length=6)
              public 'deptime' => string '2016-06-01 16:47:00' (length=19)
              public 'arrtime' => string '17:01:39' (length=8)
              public 'gs' => string '397' (length=3)
              public 'alt' => string '26955' (length=5)
              public 'lat' => string '41.340347359635' (length=15)
              public 'lng' => string '-72.46185414378' (length=15)
              public 'phasedetail' => string 'Climbing' (length=8)
              public 'timeremaining' => string '07:45:00' (length=8)
              public 'online' => string 'No' (length=2)
              public 'depicao' => string 'KJFK' (length=4)
              public 'arricao' => string 'LFPO' (length=4)
              public 'heading' => string '68' (length=2)
              public 'distremain' => string '3080' (length=4)
              public 'aircraftname' => string 'B747-400' (length=8)
              public 'zone' =>
                array (size=1)
                  0 =>
                    object(stdClass)[2]
                      ...
              public 'code' => string 'IV' (length=2)
              public 'pilotid' => string 'IV0018' (length=6)
              public 'firstname' => string 'Mattia' (length=6)
              public 'lastname' => string 'test' (length=4)
              public 'deplat' => string '40.6398' (length=7)
              public 'deplng' => string '-73.7789' (length=8)
              public 'arrlat' => string '48.7253' (length=7)
              public 'arrlng' => string '2.35944' (length=7)
              public 'route_details' =>
                array (size=0)
                  empty
              public 'percomplete' => float 2.32
              public 'distremaining' => string '3080' (length=4)
              public 'pilotname' => string 'Mattia' (length=6)

Upvotes: 0

Related Questions