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

2015-01-24信息快讯网

最近用到一些简单的对象与数组的相互转换的问题,写个两个方法如下,需要的朋友可以参考下。

 
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多层数组与对象的转换实例代码
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
PHP中数组合并的两种方法及区别介绍
PHP合并两个数组的两种方式的异同
PHP 面向对象详解
php中将汉字转换成拼音的函数代码
php比较多维数组中值的大小排序实现代码
PHP输出数组中重名的元素的几种处理方法
php日期转时间戳,指定日期转换成时间戳
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
php面向对象 字段的声明与使用
PHP对象Object的概念 介绍
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
几个有用的php字符串过滤,转换函数代码
php的list()的一步操作给一组变量进行赋值的使用
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
php 数组的一个悲剧?
php 归并排序 数组交集
php在多维数组中根据键名快速查询其父键以及父键值的代码
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
对text数据类型不支持代码页转换 从: 1252 到: 936
PHP遍历二维数组的代码
php中显示数组与对象的实现代码
zend api扩展的php对象的autoload工具
php 面向对象的一个例子
javascript,php获取函数参数对象的代码
php短域名转换为实际域名函数
php foreach 参数强制类型转换的问题
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
php表单转换textarea换行符的方法
©2014-2024 dbsqp.com