Home > other >  Array to property Object in Javascript
Array to property Object in Javascript

Time:11-08

I need some help please.

I have this array in php:

Array ( 
    [0] => Array ( 
        [name] => Ville1 
        [description] => adresse1 
        [lng] => -10.35 
        [lat] => 29.1833 
    ) 
    [1] => Array ( 
        [name] => Ville2 
        [description] => description2 
        [lng] => 12.61667 
        [lat] => 38.3833 
    ) 
) 

How can I transform it in this format and add in a objet in javascript ?

locations: {
    "0": {
      lat: "48.3833",
      lng: "12.61667",
      name: "Ville1",
      description: "adresse1"
    },
    "1": {
      lat: "29.1833",
      lng: "-10.35",
      name: "Ville2",
      description: "adresse2"
    }
  },

Thanks and sorry for the english..

CodePudding user response:

The solution is simple. The only think you have to do, is to pass the array to the php function json_encode.

This will convert automatically your array to JSON.

The same way, you could also convert PHP Objects to JSON.

Finally, there's also another function of PHP with the name json_decode that does the opposite. If you have a JSON string, you can convert it to PHP Array or Object.

The only difference, is that when you convert JSON objects, in PHP you get stdClass instances.

<?php

$array = [
    [
        "name" => "Ville1",
        "description" => "adresse1",
        "lng" => -10.35,
        "lat" => 29.1833
    ],
    [
        "name" => "Ville2",
        "description" => "description2",
        "lng" => 12.61667,
        "lat" => 38.3833
    ]
];

$jsonStructure = json_encode($array);

?>
<script>
var locations = <?php echo $jsonStructure; ?>;

// The following line should print in your browser console 
// the word: Ville1
console.log(locations[0].name);
</script>

CodePudding user response:

Please update your PHP Code accordingly. It should be working for you.

$array = [
    [
        "name" => "Ville1",
        "description" => "adresse1",
        "lng" => -10.35,
        "lat" => 29.1833
    ],
    [
        "name" => "Ville2",
        "description" => "description2",
        "lng" => 12.61667,
        "lat" => 38.3833
    ]
];
foreach ($array as $keys => $value ) {
    $object->{$keys} = $value;
}
$jsonStructure = json_encode($object); 
echo $jsonStructure;

The output should be like this :

{
  "0": {
    "name": "Ville1",
    "description": "adresse1",
    "lng": -10.35,
    "lat": 29.1833
  },
  "1": {
    "name": "Ville2",
    "description": "description2",
    "lng": 12.61667,
    "lat": 38.3833
  }
}

Now you can use this $jsonStructure to your javascript.

CodePudding user response:

After doing => $jsonStructure = json_encode($array); My array in php is:

[{"name":"Ville1","description":"adresse1","lng":-10.35,"lat":29.1833},{"name":"Ville2","description":"description2","lng":12.61667,"lat":38.3833}] 

I do:

<script>
var locations = <?php echo $jsonStructure; ?>;
// The following line should print in your browser console 
// the word: Ville1   => YES IT'S TRUE BUG NOT WHAT I WANT :)
console.log(locations);

myObjet.location = locations;
</script>

See the screen: enter image description here

But it is not the good format, it must be like:

locations: {
"0": {
  lat: "48.3833",
  lng: "12.61667",
  name: "Ville1",
  description: "adresse1"
},
"1": {
  lat: "29.1833",
  lng: "-10.35",
  name: "Ville2",
  description: "adresse2"
}

},

  • Related