web-dev-qa-db-fra.com

Comment accéder à une propriété d'un objet (membre stdClass Object) / à un élément d'un tableau?

En faisant print_r() sur mon tableau, j'obtiens ce qui suit:

Array ( 
    [0] => 
        stdClass Object 
        ( 
            [id] => 25 
            [time] => 2014-01-16 16:35:17 
            [fname] => 4 
            [text] => 5 
            [url] => 6 
        ) 
)

Comment puis-je accéder à une valeur spécifique dans le tableau? Le code suivant ne fonctionne pas à cause de l'objet stdClass

echo $array['id'];
39
Alex

Pour accéder à un membre du tableau, utilisez $array['KEY'];

Pour accéder à un membre d'objet, vous utilisez $obj->KEY;

Pour accéder à un membre d'objet dans un tableau d'objets:
$array[0] // Récupère le premier objet du tableau
$array[0]->KEY // puis accédez à sa clé

Vous pouvez aussi faire une boucle sur un tableau d'objets comme ceci:

foreach ($arrayOfObjs as $key => $object) {
    echo $object->object_property;
}

Pensez à un tableau comme une collection de choses. C'est un sac dans lequel vous pouvez stocker vos documents, leur attribuer un identifiant unique (clé) et y accéder (ou les extraire du sac) à l'aide de cette clé. Je veux que les choses restent simples ici, mais ce sac peut contenir d'autres sacs aussi :)

Mise à jour (cela pourrait aider quelqu'un à mieux comprendre):

Un tableau contient les paires 'key' et 'value'. La fourniture d'une clé pour un membre du groupe est facultative. Dans ce cas, une clé numérique lui est automatiquement attribuée. Elle commence par 0 et continue à être incrémentée de 1 pour chaque membre supplémentaire. Nous pouvons récupérer une 'valeur' ​​du tableau par 'key'.

Nous pouvons donc définir un tableau des manières suivantes (en ce qui concerne les clés):

Première méthode:

$colorPallete = ['red', 'blue', 'green'];

Le tableau ci-dessus se verra attribuer des touches numériques automatiquement. La touche affectée au rouge sera donc 0, pour le bleu 1 et ainsi de suite.

Obtenir des valeurs du tableau ci-dessus:

$colorPallete[0]; // will output 'red'
$colorPallete[1]; // will output 'blue'
$colorPallete[2]; // will output 'green'

Deuxième méthode:

$colorPallete = ['love' => 'red', 'trust' => 'blue', 'envy' => 'green']; // we expliicitely define the keys ourself.

Obtenir des valeurs du tableau ci-dessus:

$colorPallete['love']; // will output 'red'
$colorPallete['trust']; // will output 'blue'
$colorPallete['envy']; // will output 'green'
75
Lucky Soni

Essayez ceci, fonctionne bien -

$array = json_decode(json_encode($array), true);
19
Rohit Suthar

Essaye ça:

echo $array[0]->id;
9
giordanolima

Vous avez un tableau. Un tableau PHP est en gros une "liste de choses". Votre tableau contient une chose. Cette chose est une classe standard. Vous devez soit supprimer la chose de votre tableau.

$object = array_shift($array);
var_dump($object->id);

Ou faites référence à la chose par son index dans le tableau.

var_dump( $array[0]->id );

Ou, si vous n'êtes pas sûr du nombre d'éléments contenus dans le tableau, passez en boucle sur le tableau.

foreach($array as $key=>$value)
{
    var_dump($value->id);
    var_dump($array[$key]->id);
}
3
Alan Storm

Que diriez-vous quelque chose comme ça.

function objectToArray( $object ){
   if( !is_object( $object ) && !is_array( $object ) ){
    return $object;
 }
if( is_object( $object ) ){
    $object = get_object_vars( $object );
}
    return array_map( 'objectToArray', $object );
}

et appelez cette fonction avec votre objet

$array = objectToArray( $yourObject );

référence

0
Nomi