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开发中常用的8个小技巧
Aug 27 PHP
php session处理的定制
Mar 16 PHP
php 图像函数大举例(非原创)
Jun 20 PHP
第六章 php目录与文件操作
Dec 30 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
php删除文本文件中重复行的方法
Apr 28 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
Dec 02 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 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
php5 pdo新改动加载注意事项
2008/09/11 PHP
Laravel5中contracts详解
2015/03/02 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
JS常用知识点整理
2017/01/21 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
python操作xml文件详细介绍
2014/06/09 Python
Python计算程序运行时间的方法
2014/12/13 Python
python正则分析nginx的访问日志
2017/01/17 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Python异常处理操作实例详解
2018/05/10 Python
python实现音乐下载的统计
2018/06/20 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
集团公司总经理岗位职责
2013/12/20 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
Django migrate报错的解决方案
2021/05/20 Python