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 cache类代码(php数据缓存类)
Apr 15 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
php 流程控制switch的简单实例
Jun 07 PHP
yii2安装详细流程
May 23 PHP
PHP实现的AES双向加密解密功能示例【128位】
Sep 03 PHP
PHP fprintf()函数用法讲解
Feb 16 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 PHP
PHP扩展安装方法步骤解析
Nov 24 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 cookie的操作实现代码(登录)
2010/12/29 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
python模块常用用法实例详解
2019/10/17 Python
Python如何对XML 解析
2020/06/28 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
3个CCIE对一个工程师的面试题
2012/05/06 面试题
Java软件工程师综合面试题笔试题
2013/09/08 面试题
大专生自我鉴定范文
2013/10/01 职场文书
大学生党课感想
2015/08/11 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技