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


Posted in PHP onAugust 05, 2013

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

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

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

下面上代码:

<?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);
?>

PHP 相关文章推荐
超级简单的发送邮件程序
Oct 09 PHP
PHP编码规范之注释和文件结构说明
Jul 09 PHP
php下批量挂马和批量清马代码
Feb 27 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
php文件上传的例子及参数详解
Dec 12 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
PHP中使用虚代理实现延迟加载技术
Nov 05 PHP
php树型类实例
Dec 05 PHP
php实现高效获取图片尺寸的方法
Dec 12 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
Nov 25 PHP
注意:php5.4删除了session_unregister函数
Aug 05 #PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 #PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 #PHP
基于php中使用excel的简单介绍
Aug 02 #PHP
PHP自动识别字符集并完成转码详解
Aug 02 #PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 #PHP
php实现查询百度google收录情况(示例代码)
Aug 02 #PHP
You might like
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
深入浅析Python的类
2018/06/22 Python
详解Python中的type和object
2018/08/15 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
关于pandas的离散化,面元划分详解
2019/11/22 Python
Python调用Windows命令打印文件
2020/02/07 Python
高中毕业生自我鉴定范文
2013/09/26 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
师德演讲稿范文
2014/05/06 职场文书
团日活动总结书格式
2014/05/08 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
员工旷工检讨书
2015/08/15 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL