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"
}
},