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实现登陆验证码(类似条行码状)
Oct 09 PHP
用PHP实现图象锐化代码
Jun 14 PHP
一家之言的经验之谈php+mysql扎实个人基本功
Mar 27 PHP
php在线打包程序源码
Jul 27 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
Aug 19 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
Oct 30 PHP
php+ajax实现商品对比功能示例
Apr 13 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 PHP
php 的多进程操作实践案例分析
Feb 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
php miniBB中文乱码问题解决方法
2008/11/25 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
js window.print实现打印特定控件或内容
2013/09/16 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
python简单文本处理的方法
2015/07/10 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
《逃家小兔》教学反思
2014/02/23 职场文书
2014庆六一活动方案
2014/03/02 职场文书
书香校园建设方案
2014/05/02 职场文书
医院合作协议书
2014/08/19 职场文书
农村文化活动总结
2014/08/28 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
学校少先队工作总结
2015/08/12 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
Linux安装apache服务器的配置过程
2021/11/27 Servers
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫