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.
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!