157 votes

Convertir un objet stdClass en tableau en PHP

Je récupère l'identifiant du post à partir de postmeta comme suit :

$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");

quand j'essaie print_r($post_id); J'ai un tableau comme ceci :

Array
(
    [0] => stdClass Object
        (
            [post_id] => 140
        )

    [1] => stdClass Object
        (
            [post_id] => 141
        )

    [2] => stdClass Object
        (
            [post_id] => 142
        )

)

et je ne sais pas comment le parcourir, et comment pourrais-je obtenir un tableau comme ceci

Array
(
    [0]  => 140

    [1] => 141

    [2] => 142

)

Des idées sur comment je pourrais faire cela?

348voto

Amal Murali Points 37729

La manière la plus simple est d'encoder votre objet en JSON et ensuite de le décoder en un tableau :

$array = json_decode(json_encode($object), true);

Ou si vous préférez, vous pouvez également parcourir l'objet manuellement :

foreach ($object as $value) 
    $array[] = $value->post_id;

69voto

Rey Ramos Points 559

Très simple, tout d'abord transformez votre objet en un objet json, cela renverra une chaîne de votre objet sous forme de représentation JSON.

Prenez ce résultat et décodez-le avec un paramètre supplémentaire de true, où il se convertira en tableau associatif

$array = json_decode(json_encode($oObject),true);

28voto

Essayez ceci :

$new_array = objectToArray($yourObject);

function objectToArray($d) 
{
    if (is_object($d)) {
        // Obtient les propriétés de l'objet donné
        // avec la fonction get_object_vars
        $d = get_object_vars($d);
    }

    if (is_array($d)) {
        /*
        * Renvoyer un tableau converti en objet
        * En utilisant __FUNCTION__ (Constante magique)
        * pour un appel récursif
        */
        return array_map(__FUNCTION__, $d);
    } else {
        // Renvoyer un tableau
        return $d;
    }
}

26voto

Dinesh Kaswan Points 399

Vous pouvez convertir un objet std en un tableau de la manière suivante :

$objectToArray = (array)$object;

22voto

Tayyab Hayat Points 19

Il existe deux façons simples de convertir un objet stdClass en un tableau

$array = get_object_vars($obj);

et l'autre est

$array = json_decode(json_encode($obj), true);

ou vous pouvez simplement créer un tableau en utilisant une boucle foreach

$array = array();
foreach($obj as $key){
    $array[] = $key;
}
print_r($array);

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