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+DBM的同学录程序(4)
Oct 09 PHP
如何删除多级目录
Oct 09 PHP
php强制下载类型的实现代码
Apr 21 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
php增删改查示例自己写的demo
Sep 04 PHP
PHP中$_SERVER的详细参数与说明介绍
Oct 26 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
使用php实现网站验证码功能【推荐】
Feb 09 PHP
PHP registerXPathNamespace()函数讲解
Feb 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
如何在python中写hive脚本
2019/11/08 Python
python3实现单目标粒子群算法
2019/11/14 Python
Python调用JavaScript代码的方法
2020/10/27 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
大学生关于奋斗的演讲稿
2014/01/09 职场文书
护士思想汇报
2014/01/12 职场文书
活动总结的格式
2014/05/07 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
责任书范本大全
2015/05/11 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技