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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
如何写php程序?
Dec 08 PHP
php模块memcache和memcached区别分析
Jun 14 PHP
php实现下载限制速度示例分享
Feb 13 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
8个PHP程序员常用的功能汇总
Dec 18 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
PHP中FTP相关函数小结
Jul 15 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 03 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
ThinkPHP惯例配置文件详解
2014/07/14 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
Python设计模式之抽象工厂模式
2016/08/25 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
如何用Python合并lmdb文件
2018/07/02 Python
简单了解python的一些位运算技巧
2019/07/13 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
学校课外活动总结
2014/05/08 职场文书
食品流通安全承诺书
2014/05/22 职场文书
领导干部保密承诺书
2014/08/30 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
奖金申请报告模板
2015/05/15 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
值班管理制度范本
2015/08/06 职场文书
学习党章心得体会2016
2016/01/15 职场文书
Python实现Hash算法
2022/03/18 Python
Python创建SQL数据库流程逐步讲解
2022/09/23 Python