103 votes

Comment accéder aux propriétés d'un objet dont les noms sont des entiers ou des noms de propriétés invalides ?

J'utilise json_decode() quelque chose comme :

$myVar = json_decode($data)

Ce qui me donne un résultat comme celui-ci :

[highlighting] => stdClass Object
        (
            [448364] => stdClass Object
                (
                    [Data] => Array
                        (
                            [0] => Tax amount liability is ....... 

Je veux accéder à la valeur de la chaîne dans la clé [0]. Lorsque j'essaie de faire quelque chose comme :

print $myVar->highlighting->448364->Data->0;

Je reçois cette erreur :

Erreur d'analyse : erreur de syntaxe, T_DNUMBER inattendu

Il semble y avoir un problème avec les deux chiffres/nombres entiers.

1voto

Ruwantha Points 966

J'avais copié cette fonction sur le net. Si elle fonctionne comme indiqué ("Function to Convert stdClass Objects to Multidimensional Arrays"), essayez ce qui suit :

<?php

    function objectToArray($d) {
        if (is_object($d)) {
            // Gets the properties of the given object
            // with get_object_vars function
            $d = get_object_vars($d);
        }

        if (is_array($d)) {
            /*
            * Return array converted to object
            * Using __FUNCTION__ (Magic constant)
            * for recursive call
            */
            return array_map(__FUNCTION__, $d);
        }
        else {
            // Return array
            return $d;
        }
    }

?>
  • Passez d'abord votre tableau à objectToArray fonction
  • puis prendre la valeur de retour
  • echo [highlighting][448364][Data][0]

Source : PHP stdClass vers Array et Array vers stdClass

0voto

Gustav Points 960

Je crains que vous ne soyez pas autorisé à nommer des objets commençant par des chiffres. Renommez le premier "448364" en commençant par une lettre.

Le second est un tableau, on y accède par des parenthèses comme ceci :

print myVar->highlighting->test_448364->Data[0]

au lieu de

0 votes

Je ne peux pas le changer. La sortie est renvoyée par une application sur laquelle je n'ai aucun contrôle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X