[RESOLU] Objet avec un tiret dans son nom, comment ne pas avoir un tas d'erreurs PHP ?

Avatar du membre
Eléphant du PHP | 224 Messages

11 oct. 2023, 13:30

Coucoutte :D

Je récupère les infos d'un serveur IceCast par son lien :

Code : Tout sélectionner

$statusurl = "https://domaine:port/status-json.xsl"; $xml = json_decode(file_get_contents($statusurl));
Mais dans les infos il y a un champ "ice-samplerate" que je n'arrive pas à récupérer.

Code : Tout sélectionner

if (isset($xml->icestats->source->ice-samplerate)){ $icesamplerate = $xml->icestats->source->ice-samplerate; } else { $icesamplerate = 'NA'; }
Je me mange une erreur :
Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
Si je remplace par :

Code : Tout sélectionner

if (null !== $xml->icestats->source->ice-samplerate){ .....
Je me fait insulter 4 fois par le serveur lol
Notice: Undefined property: stdClass::$source
Notice: Trying to get property 'ice' of non-object
Warning: Use of undefined constant samplerate - assumed 'samplerate' (this will throw an Error in a future version of PHP)
Warning: A non-numeric value encountered
Comment je peux récupérer ce champs qui a ce tiret ? (sachant que j'ai le même probleme avec un autre champ qui a aussi un tiret).
J'ai fouillé pendant un moment mais je ne sais pas par quel terme chercher ce genre de problème , je n'obtiens pas de résultat de recherche pertinents :(

Merkouin :D
Couin
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen:

ynx
Mammouth du PHP | 586 Messages

11 oct. 2023, 13:43

Bonjour,

Utilises des accolades pour accéder à une propriété avec un tiret :
if (null !== $xml->icestats->source->{'ice-samplerate'})

Avatar du membre
Eléphant du PHP | 224 Messages

11 oct. 2023, 18:40

Coucou !

Rapide et efficace, impecc' ! Je n’aurais jamais pensé à cette syntaxe.

Merkouin :)
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen: