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;
}
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 function array_multi2single($array){ static $result_array = array(); foreach($array as $value){ if(is_array($value)){ ...
要将数组转换为对象,我们可以使用`arrayToObject`函数,如下所示: ```php function arrayToObject($e) { if( gettype($e) != 'array' ) return; foreach($e as $k=>$v) { if( gettype($v)=='array' || gettype...
在对象转换为数组的递归方法中,我们需要对每个对象属性进行检查,如果属性值是对象或数组,就对其递归调用转换函数,直到所有层级的对象都被转换为数组。 上述过程中提到的函数object_to_array()就是这样一个递归...
总结来说,PHP中处理多维数组转换为字符串或一维数组的方法是通过递归与迭代的方式进行的。使用递归方法能够处理多层嵌套数组,而迭代方法则适合将所有元素平铺开来。这些方法在实际开发中的应用场景十分广泛,掌握...
在PHP中处理多维数组时,有时需要删除数组中包含特定值的元素。多维数组是数组的数组,可能包含任意数量的嵌套层。...此外,确保在编写类似的递归函数时充分理解数据结构和业务逻辑的需求,以保证代码的正确性和效率。
- **对象到数组转换**:在 PHP 5.3 中,一些函数(如 `array_flip`, `array_unique`)不再直接接受对象作为参数。需要先将对象转换为数组,如清单 3 所示。 6. **其他改进**: - **错误处理**:引入了异常处理,...
有时我们可能需要将多维数组转换成一维数组,这样操作起来更加方便,特别是在需要对数组元素进行简单遍历或者处理的时候。 在PHP标准库中并没有直接实现多维数组转一维数组的函数,但是我们可以通过编写自定义函数...
`serialize()`函数将数组转换为字符串,方便存储或传输;`unserialize()`则将字符串还原为数组。 总结,PHP中的数组是数据处理的核心部分,熟练掌握数组操作能极大地提高代码的效率和可读性。理解数组的定义、访问...
在PHP编程中,二维数组是一种常见的数据结构,用于存储具有多层关系的数据。本文通过两个示例详细介绍了如何在PHP中创建和遍历二维数组。 首先,我们来看第一个示例,这个示例创建了一个表示商品列表的二维数组。每...
总结一下,`Fwcms_MakeXML`类提供了一种简洁、高效的方式,使用PHP将数组转换为XML,尤其适合处理多层嵌套的数据结构。通过递归函数`make()`,类能够处理任意深度的数组,并生成符合XML规范的字符串。结合单例模式,...
标题中的“比较好用的PHP防注入漏洞过滤函数代码”指的是一个PHP代码片段,用于保护Web应用程序免受SQL注入攻击。这种攻击通常是通过恶意用户输入含有SQL命令的参数,以执行未授权的操作。以下是对该代码的详细解释...
- **变量与数据类型**:PHP支持多种数据类型,包括整型、浮点型、字符串、数组和对象等。变量声明时无需指定类型,直接使用即可。 - **流程控制**:包括条件语句(if、else、switch)和循环语句(while、for)等。 - **...
它接受一个数组或任意参数个数,使用`func_get_args`函数将多个参数转换成数组,然后通过`array_filter`和`array_map`结合`strval`函数确保所有的参数都是字符串,并使用`join`函数和`SP`拼接成一个新的字符串。...
它们将PHP数组的行为转换为对象操作,支持迭代和数组方法。 - `ArrayObject`: 提供了一个可以迭代的数组容器,并且可以使用不同的迭代策略。 - `ArrayIterator`: 直接将普通数组转化为可迭代的对象。 ### 3. SPL...
无类型的特性提供了灵活性,而continue的多层跳过和数组的多样性则增加了代码的控制力和实用性。对于初学者而言,理解这些基础概念是掌握PHP编程的关键步骤。随着对PHP的深入学习,开发者可以利用这些特性构建复杂的...
- 20150514:添加表格处理功能,并将代码重构为面向对象的形式。 - 20150519:使用GD库处理网络图片。 ### 总结 通过使用PHPWord库,开发者可以方便地将HTML页面转换为Word文档,实现数据的导出和分享。这个过程...
根据给定文件信息,本文将详细介绍PHP无限分类代码的实现方式,以及如何通过数组格式化和直接输出菜单这两种方式来展示分类菜单。 ### PHP无限分类代码实现 无限分类是一种常用的组织数据的方式,特别是在网站的...