php简单对象与数组的转换函数代码(php多层数组和对象的转换)


Posted in PHP onMay 18, 2011
function arrayToObject($e){ 
if( gettype($e)!='array' ) return; 
foreach($e as $k=>$v){ 
if( gettype($v)=='array' || getType($v)=='object' ) 
$e[$k]=(object)arrayToObject($v); 
} 
return (object)$e; 
} function objectToArray($e){ 
$e=(array)$e; 
foreach($e as $k=>$v){ 
if( gettype($v)=='resource' ) return; 
if( gettype($v)=='object' || gettype($v)=='array' ) 
$e[$k]=(array)objectToArray($v); 
} 
return $e; 
}

上面的内容来自 cnblogs jaiho
php多层数组和对象的转换
多层数组和对象转化的用途很简单,便于处理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 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
php_xmlhttp 乱码问题解决方法
Aug 07 PHP
php中使用临时表查询数据的一个例子
Feb 03 PHP
如何判断php数组的维度
Jun 10 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
PHP魔术方法的使用示例
Jun 23 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
PHP的运行机制与原理(底层)
Nov 16 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
Aug 07 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 #PHP
php小型企业库存管理系统的设计与实现代码
May 16 #PHP
Views rows style模板重写代码
May 16 #PHP
rrmdir php中递归删除目录及目录下的文件
May 15 #PHP
centos 5.6 升级php到5.3的方法
May 14 #PHP
php中在PDO中使用事务(Transaction)
May 14 #PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 #PHP
You might like
实用函数2
2007/11/08 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
Python-接口开发入门解析
2019/08/01 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
python实现ping命令小程序
2020/12/28 Python
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
总经理秘书岗位职责
2014/03/17 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
体育个人工作总结
2015/02/09 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS