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)**/

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah perbezaan antara Huawei GT3 Pro dan GT4?

Senaraikan beberapa alatan yang digunakan untuk menguji kestabilan sistem Linux

Betulkan: Alat snipping tidak berfungsi dalam Windows 11

Cara Membetulkan Ralat Tidak Dapat Menyambung ke App Store pada iPhone

Isih tatasusunan menggunakan fungsi Array.Isih dalam C#

Prestasi CPU Snapdragon X Elite hampir sama pada bateri vs kuasa AC dalam penanda aras Vivobook S15

Prestasi CPU Snapdragon X Elite hampir sama pada bateri dan dipalamkan dalam penanda aras Vivobook S15
