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类
Apr 09 PHP
PHP基础学习小结
Apr 17 PHP
PHP采集类Snoopy抓取图片实例
Jun 19 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
php返回相对时间(如:20分钟前,3天前)的方法
Apr 14 PHP
PHP遍历数组的方法汇总
Apr 30 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 PHP
laravel 出现command not found问题的解决方案
Oct 23 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
一个多文件上传的例子(原创)
2006/10/09 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
js实现跨域访问的三种方法
2015/12/09 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
使用Python求解最大公约数的实现方法
2015/08/20 Python
简单介绍python封装的基本知识
2019/08/10 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
小学教师的自我评价范例
2013/10/31 职场文书
花店创业计划书范文
2014/02/07 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
python爬虫selenium模块详解
2021/03/30 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python