PHP 对象、数组间的变换
Jun 13, 2016 am 10:55 AM
PHP 对象、数组间的转换
/** * PHP 对象、数组间的转换 * * @author flyer0126 * @since 2012/05/03 **/// 1. 利用(array)和(object),简单处理$objTemp = (object)array();$objTemp->a = 1;$objTemp->b = 2;$objTemp->c = 3;$arrTemp = (array)$objTemp;print_r($objTemp);print_r($arrTemp);?/**stdClass Object( [a] => 1 [b] => 2 [c] => 3)Array( [a] => 1 [b] => 2 [c] => 3)**/// PS:简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力。// 2. 多维数组与对象间的转换处理/** * 将对象转换为多维数组 * **/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: $init = new stdClass;$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 arrayprint_r($init);print_r($array);print_r($object);?/**stdClass Object( [foo] => Test data [bar] => stdClass Object ( [baaz] => Testing [fooz] => stdClass Object ( [baz] => Testing again ) ) [foox] => Just test)Array( [foo] => Test data [bar] => Array ( [baaz] => Testing [fooz] => Array ( [baz] => Testing again ) ) [foox] => Just test)stdClass Object( [foo] => Test data [bar] => stdClass Object ( [baaz] => Testing [fooz] => stdClass Object ( [baz] => Testing again ) ) [foox] => Just test)**/

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quelles sont les différences entre Huawei GT3 Pro et GT4 ?

Répertoriez quelques outils utilisés pour tester la stabilité des systèmes Linux

Correctif : l'outil de capture ne fonctionne pas sous Windows 11

Comment réparer l'erreur Impossible de se connecter à l'App Store sur iPhone

Trier le tableau à l'aide de la fonction Array.Sort en C#

Performances du processeur Snapdragon X Elite presque identiques sur batterie par rapport à l'alimentation secteur dans les tests du Vivobook S15

Performances du processeur Snapdragon X Elite presque identiques sur batterie et branché dans les benchmarks Vivobook S15
