Hello,
Alors voila, je suis le cours sur le PHP et j'en suis a la section curl.
J'arrive a mettre en place curl suivant le tuto.
$curl = curl_init('api.openweathermap.org/data/2.5/weather?q=London&appid={APIKEY}');
curl_setopt_array($curl,[
CURLOPT_TIMEOUT => 1,
CURLOPT_RETURNTRANSFER => true
]);
$data = curl_exec($curl);
Ensuite, j'utilise json_decode($data,true) pour avoir la ressource sous forme de tableau :
array(13) {
["coord"]=>
array(2) {
["lon"]=>
float(-0.1257)
["lat"]=>
float(51.5085)
}
["weather"]=>
array(1) {
[0]=>
array(4) {
["id"]=>
int(804)
["main"]=>
string(6) "Clouds"
["description"]=>
string(15) "overcast clouds"
["icon"]=>
string(3) "04n"
}
}
["base"]=>
string(8) "stations"
["main"]=>
array(6) {
["temp"]=>
float(283.29)
["feels_like"]=>
float(278.43)
["temp_min"]=>
float(282.59)
["temp_max"]=>
float(284.26)
["pressure"]=>
int(1002)
["humidity"]=>
int(76)
}
["visibility"]=>
int(10000)
["wind"]=>
array(2) {
["speed"]=>
float(5.66)
["deg"]=>
int(220)
}
["clouds"]=>
array(1) {
["all"]=>
int(90)
}
["dt"]=>
int(1611074228)
["sys"]=>
array(5) {
["type"]=>
int(1)
["id"]=>
int(1414)
["country"]=>
string(2) "GB"
["sunrise"]=>
int(1611042930)
["sunset"]=>
int(1611073597)
}
["timezone"]=>
int(0)
["id"]=>
int(2643743)
["name"]=>
string(6) "London"
["cod"]=>
int(200)
}
Et la commence mon problème.
Je souhaite extraire certaines données de mon tableau $data.
Par exemple pour obtenir la valeur ['lon'] ou ['lat'] contenue dans la clé ['coord'], je sais que je peux faire tout simplement :
echo $data['coord']['lat'];
Néanmoins je souhaiterais parcourir mon tableau afin de pouvoir extraires les données.
J'essaye donc :
$array = [];
foreach($data['coord'] as $coord){
$array[] = [
'latitude'=>$coord['lat'],
'longitude'=>$coord['lon']
];
}
Mais ça me retourne une erreur : Notice: Trying to access array offset on value of type float.
Après plusieurs syntaxe et recherche, je n'arrive toujours pas a comprendre mon erreur ni comment m'y prendre.
Du coup si quelqu'un pourrait m'apporter ses lumières, sa serait méga cool car la je ne sais vraiment plus quoi faire ^^.
Merci pour vos réponses ;)
Bonjour,
Tu essayes de boucler sur un tableau qui n'a pas les valeurs "lat" et "lon". Ta bloucle rentre déjà dans le tableau coords mais ce tableau ne contient pas de sous-tableau.
foreach( $data['coord'] as $coord_key => $coord ){
echo '<pre>' . print_r( $coord, true ) . '</pre>'; // Ceci retourne les valeurs de "lat" et "lon"
}
Le code ci-dessous te permettra de populer ton tableau avec les clés et les valeurs du tableau coord
$array = [];
foreach( $data['coord'] as $coord_key => $coord ){
$array[$coord_key] = $coord_value;
}
En espérant t'avoir aidé
Bonjour Never,
Merci pour ta réponse car c'était le comportement que je cherché à mettre en place.
Sujet résolu =)
Tu peux signaler la réponse comme étant celle qui a résolu ton problème, pour aider les futurs lecteurs à trouver plus rapidement la solution ;)