Maison > développement back-end > Problème PHP > Comment forcer un objet dans un tableau en php

Comment forcer un objet dans un tableau en php

藏色散人
Libérer: 2023-03-08 17:48:02
original
1886 Les gens l'ont consulté

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;  
}
Copier après la connexion

2.

$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

json_decode(json_encode($array),true)
Copier après la connexion

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);
?>
Copier après la connexion
.

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal