Maison  >  Article  >  développement back-end  >  Comment forcer un objet dans un tableau en php

Comment forcer un objet dans un tableau en php

藏色散人
藏色散人original
2021-03-15 09:31:531852parcourir

Comment forcer un objet à devenir un tableau en PHP : 1. Convertir via la méthode "object_array" définie ; 2. Convertir via la méthode "json_decode" 3. Convertir via la méthode "object2array_pre" définie.

Comment forcer un objet dans un tableau en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Objet PHP vers tableau

1.

//PHP stdClass Object转array  
function object_array($array) {  
    if(is_object($array)) {  
        $array = (array)$array;  
    } 
    if(is_array($array)) {
        foreach($array as $key=>$value) {  
            $array[$key] = object_array($value);  
        }  
    }  
    return $array;  
}

2.

$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);

3.

function object2array_pre(&$object) {
    if (is_object($object)) {
        $arr = (array)($object);
    } else {
        $arr = &$object;
    }
    if (is_array($arr)) {
        foreach($arr as $varName => $varValue){
            $arr[$varName] = $this->object2array($varValue);
        }
    }
    return $arr;
}

4 Si la quantité de données est de 10W, l'exécution prendra 1. Deuxièmement, la structure sera plus compliquée et peut atteindre 3s. Les performances sont trop mauvaises. Vous pouvez le remplacer par ce qui suit :

function object2array(&$object) {
    $object =  json_decode( json_encode( $object),true);
    return  $object;
}

json_decode(json_encode($array),true)

Le but du tableau multicouche. et la conversion d'objets est très simple et facile à gérer les nombres multicouches dans WebService Conversion de groupes et d'objets [Apprentissage recommandé : "Tutoriel vidéo PHP"]

Simple (tableau) et ( object) ne peut gérer que des données monocouches pour les tableaux multicouches et la conversion d'objets ne fait rien.

L'objet peut être converti en tableau à la fois via json_decode(json_encode($object), mais il y aura des problèmes lors de la rencontre de caractères non-ascii codés non utf-8 dans l'objet, tels que gbk Chinois, sans parler de json_encode et Les performances du décodage sont également discutables

Le code ci-dessous :

<?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;
        }
    }
 
    function arrayToObject($d) {
        if (is_array($d)) {
            /*
            * Return array converted to object
            * Using __FUNCTION__ (Magic constant)
            * for recursive call
            */
            return (object) array_map(__FUNCTION__, $d);
        }
        else {
            // Return object
            return $d;
        }
    }
 
    // Useage:
    // Create new stdClass Object     
        $init = new stdClass;
    // Add some test data
    $init->foo = "Test data";
    $init->bar = new stdClass;
    $init->bar->baaz = "Testing";
    $init->bar->fooz = new stdClass;
    $init->bar->fooz->baz = "Testing again";
    $init->foox = "Just test";
 
    // Convert array to object and then object back to array
    $array = objectToArray($init);
    $object = arrayToObject($array);
 
    // Print objects and array
    print_r($init);
    echo "\n";
    print_r($array);
    echo "\n";
    print_r($object);
?>
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn