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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
Zend的Registry机制的使用说明
May 02 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
PHP间隔一段时间执行代码的方法
Dec 02 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
Yii2使用表单上传文件的实例代码
Aug 03 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 PHP
PHP7 整型处理机制修改
Mar 09 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
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
php文件包含的几种方式总结
2019/09/19 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
javascript中this指向详解
2016/04/23 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
实例浅析js的this
2016/12/11 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
Python中的ConfigParser模块使用详解
2015/05/04 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
python 不以科学计数法输出的方法
2018/07/16 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
印度网上药店:1mg
2017/10/13 全球购物
优秀班主任经验交流材料
2014/06/02 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
一文搞懂python异常处理、模块与包
2021/06/26 Python