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 相关文章推荐
利用Ffmpeg获得flv视频缩略图和视频时间的代码
Sep 15 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
php短址转换实现方法
Feb 25 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 PHP
php实现word转html的方法
Jan 22 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
Laravel中Trait的用法实例详解
Mar 16 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 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
利用static实现表格的颜色隔行显示
2006/10/09 PHP
中篇:安装及配置PHP
2006/12/13 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
php构造函数的继承方法
2015/02/09 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
Vue异步加载about组件
2017/10/31 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
js实现缓动动画
2020/11/25 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Python Tkinter简单布局实例教程
2014/09/03 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
见习期自我鉴定
2013/11/07 职场文书
出纳岗位职责
2013/11/09 职场文书
十佳青年个人事迹材料
2014/01/28 职场文书
工作会议主持词
2014/03/17 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript