php多层数组与对象的转换实例代码

php多层数组与对象的转换实例代码

php编程 2024-12-24 22:45:03 7个月前

多层数组和对象转化的用途很简单,便于处理WebService中多层数组和对象的转化

简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力。

通过json_decode(json_encode($object)可以将对象一次性转换为数组,但是object中遇到非utf-8编码的非ascii字符则会出现问题,比如gbk的中文,何况json_encode和decode的性能也值得疑虑。下面上代码: 代码如下:

<?phpfunction 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 arrayreturn $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 objectreturn $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 arrayprint_r($init);echo "\n";print_r($array);echo "\n";print_r($object);?>

文章版权声明:除非注明,否则均为网络转载文章,转载或复制请以超链接形式并注明出处。