Bonjour,
Je souhaite récupérer des données via une API XML d'un site de jeux de sociétés, Board Game Geek. C'est la première fois que j'utilise une API, je découvre un nouvel univers qui semble vaste, très vaste. Actuellement, mon objectif est de récupérer des informations sur des jeux de sociétés.
J'ai réussi à me connecter à l'API via ce code et récupérer l'une des données qui m'intéressait :
1 2 3
| $fichier = 'https://boardgamegeek.com/xmlapi/boardgame/'.$bgg.'?stats=1';
$contenu = simplexml_load_file($fichier);
echo $contenu->boardgame->statistics->ratings->averageweight; |
Mon problème vient du fait que je souhaite récupérer des données et mes différentes tentatives pour y arriver, ont toutes échoué... C'est assez rageant...
Je voudrais récupérer cette donnée : [statistics] => SimpleXMLElement Object [@attributes] => Array [ratings] => SimpleXMLElement Object [ranks] => SimpleXMLElement Object [rank] => Array [0] => SimpleXMLElement Object [@attributes] => Array [value] => 4571
J'ai tenté ce code mais ça ne fonctionne pas...
echo $contenu->boardgame->statistics->ratings->ranks->rank[0]->value;
Comment puis-je faire pour récupérer la valeur de boardgame->statistics->ratings->ranks->rank[0]->value ? (ligne 45 du code ci-dessous)
Voici une partie de la structure initiale de la donnée XML :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| SimpleXMLElement Object
(
[@attributes] => Array
(
[termsofuse] => https://boardgamegeek.com/xmlapi/termsofuse
)
[boardgame] => SimpleXMLElement Object
(
[@attributes] => Array
(
[objectid] => 31745
)
[yearpublished] => 2007
[minplayers] => 2
[maxplayers] => 5
[playingtime] => 60
[minplaytime] => 60
[maxplaytime] => 60
[statistics] => SimpleXMLElement Object
(
[@attributes] => Array
(
[page] => 1
)
[ratings] => SimpleXMLElement Object
(
[usersrated] => 923
[average] => 6.32591
[bayesaverage] => 5.76275
[ranks] => SimpleXMLElement Object
(
[rank] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[type] => subtype
[id] => 1
[name] => boardgame
[friendlyname] => Board Game Rank
[value] => 4571
[bayesaverage] => 5.76275
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[type] => family
[id] => 5497
[name] => strategygames
[friendlyname] => Strategy Game Rank
[value] => 1749
[bayesaverage] => 5.8274
)
)
)
)
[stddev] => 1.28206
[median] => 0
[owned] => 1629
[trading] => 115
[wanting] => 28
[wishing] => 165
[numcomments] => 337
[numweights] => 102
[averageweight] => 2.6667
) |
J'ai une question subsidiaire. Lorsque je récupère cette donnée : echo $contenu->boardgame->statistics->ratings->averageweight; il s'agit d'un nombre à virgule avec, parfois 4 ou 5 chiffres après la virgule. Or je souhaite qu'une seule virgule. J'ai donc codé un round mais ça ne fonctionne pas, il met directement le chiffre sans virgule et n'accepte pas de mettre le nombre avec un seul chiffre derrière la virgule. Avez-vous une idée pourquoi il n'exécute pas ma commande ?
Voici le code que j'ai utilisé :
$valeur = round ($contenu->boardgame->statistics->ratings->averageweight, 1);
Partager