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 相关文章推荐
模仿OSO的论坛(一)
Oct 09 PHP
php巧获服务器端信息
Dec 06 PHP
php防攻击代码升级版
Dec 29 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
input file获得文件根目录简单实现
Apr 26 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 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和ACCESS写聊天室(七)
2006/10/09 PHP
使用PHP批量生成随机用户名
2008/07/10 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
深入源码解析Python中的对象与类型
2015/12/11 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
用python写爬虫简单吗
2020/07/28 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
商业项目策划方案
2014/06/05 职场文书
安全生产标语
2014/06/06 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
领导欢迎词致辞
2015/01/23 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js
MySQL深分页问题解决思路
2022/12/24 MySQL