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 相关文章推荐
PHP设计模式之装饰者模式
Feb 29 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
Nov 22 PHP
php短网址和数字之间相互转换的方法
Mar 13 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 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
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
python框架django基础指南
2016/09/08 Python
python 使用get_argument获取url query参数
2017/04/28 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
浅谈python写入大量文件的问题
2018/11/09 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Python 元组操作总结
2019/09/18 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
python里glob模块知识点总结
2021/01/05 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
毕业生的自我评价
2013/12/30 职场文书
销售员岗位职责范本
2014/02/03 职场文书
大学生标准自荐书
2014/06/15 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
食堂卫生管理制度
2015/08/04 职场文书
JavaScript实现登录窗体
2021/06/22 Javascript