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 相关文章推荐
javascript 小型动画组件与实现代码
Jun 02 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
smarty实现多级分类的方法
Dec 05 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
twig模板常用语句实例小结
Feb 04 PHP
php多线程并发实现方法
Sep 30 PHP
PHP与Web页面的交互示例详解一
Aug 04 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
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在Web开发领域的优势
2006/10/09 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
JS表的模拟方法
2015/02/05 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
python实践项目之监控当前联网状态详情
2019/05/23 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
简单了解python数组的基本操作
2019/11/26 Python
python-numpy-指数分布实例详解
2019/12/07 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
百货商场楼层班组长竞聘书
2014/03/31 职场文书
高三励志标语
2014/06/05 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
教师师德师风整改措施
2014/10/24 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书