`

PHP 对象、数组间的转换

    博客分类:
  • PHP
阅读更多
/**
 * PHP 对象、数组间的转换
 *
 * @author flyer0126
 * @since 2012/05/03
 **/

// 1. 利用(array)和(object),简单处理
$objTemp = (object)array();
$objTemp->a = 1;
$objTemp->b = 2;
$objTemp->c = 3;
$arrTemp = (array)$objTemp;
print_r($objTemp);
print_r($arrTemp);

 /**
stdClass Object
(
    [a] => 1
    [b] => 2
    [c] => 3
)
Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)
**/

// PS:简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力。

// 2. 多维数组与对象间的转换处理

/**
 * 将对象转换为多维数组
 *
 **/
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:	
$init = new stdClass;
$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);
print_r($array);
print_r($object);

 /**
stdClass Object
(
    [foo] => Test data
    [bar] => stdClass Object
        (
            [baaz] => Testing
            [fooz] => stdClass Object
                (
                    [baz] => Testing again
                )
        )
    [foox] => Just test
)
Array
(
    [foo] => Test data
    [bar] => Array
        (
            [baaz] => Testing
            [fooz] => Array
                (
                    [baz] => Testing again
                )
        )
    [foox] => Just test
)
stdClass Object
(
    [foo] => Test data
    [bar] => stdClass Object
        (
            [baaz] => Testing
            [fooz] => stdClass Object
                (
                    [baz] => Testing again
                )
        )
    [foox] => Just test
)
**/
分享到:
评论

相关推荐

    js解析php数组对象数组对象数组对象.docx

    ### JavaScript 解析 PHP 数组对象 #### 一、概述 在 Web 开发中,JavaScript 和 PHP 是两种非常重要的编程语言。PHP 主要用于服务器端的数据处理与逻辑控制,而 JavaScript 则负责客户端的交互和数据展示。在实际...

    PHP中把对象数组转换成普通数组的方法

    在PHP开发中,经常需要将对象数组转换成普通数组,尤其是在与外部API接口交互时,接口返回的数据常常是对象数组形式,而业务逻辑中需要以普通数组的方式处理这些数据。本文将详细说明如何在PHP中实现对象数组到普通...

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

    这个函数接收一个数组 `$e` 作为参数,其目标是将数组转换为对象。如果输入不是数组,函数直接返回。接着,它遍历数组中的每个元素,如果元素是数组或对象,那么递归调用 `arrayToObject()` 将该元素转换为对象。...

    PHP数组对象与Json转换操作实例分析

    接下来,我们要介绍如何将PHP对象转换回数组。`objectToArray`函数接收一个对象作为参数,将对象的每个属性转换为数组元素,同时递归处理嵌套的对象和数组: ```php function objectToArray($e){ $e=(array)$e; ...

    PHP 数组与Xml转换

    在 PHP 中,数组和 XML 之间的转换是一种常见的需求,特别是在数据交换、存储或者解析 XML 文件时。本篇文章将深入探讨如何在 PHP 中实现数组到 XML 的转换,并提供两种不同的实现方式。 首先,我们来看第一种方法...

    xml转换数组、对象转数组

    php将对象转成数组,php将xml转成数组 一个自定义函数搞定纯原创。

    php的数组操作类.zip

    将二维数组转换为HashMap,可以使数据结构更加紧凑,便于进行键值查找操作。例如,当处理大量具有唯一标识符的数据时,这种转换可以提高查找效率。 在使用这个类之前,我们需要先将其解压并引入到我们的PHP脚本中。...

    php数组去重和js数组去重最简方法

    总结来说,PHP和JavaScript中数组去重的方法各有特色,PHP需要针对二维数组自定义解决方案,而JavaScript则提供了原生的Set对象和现代语法糖。理解这些方法并根据具体场景灵活运用,能提高代码质量和效率。

    经典ASP读取JSON字符串/生成JSON对象,数组对象等。

    数组则用方括号[]表示,元素间以逗号分隔,如:`["apple", "banana", "orange"]`。 2. **ASP解析JSON字符串**: 在经典ASP中,没有内置的JSON解析库。不过可以使用第三方库,如`aspjson`,这是一个流行的ASP JSON...

    PHP实现数组和对象的相互转换操作示例

    在某些情况下,我们需要将数组和对象进行相互转换,以便更好地适应程序的需求。以下将详细介绍如何在PHP中实现这种转换。 首先,我们要了解`get_object_vars()`函数。这个函数用于获取一个对象的所有属性,并以关联...

    php实现数组中索引关联数据转换成json对象的方法

    在PHP编程中,将数组转换为JSON对象是一个常见的任务,特别是在处理前端与后端的数据交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。PHP...

    PHP查询xml,以数组返回

    我们可以使用`get_object_vars()`函数将`SimpleXMLElement`对象转换为关联数组: ```php $itemsArray = array_map('get_object_vars', $items); ``` 这样,每个`$itemsArray`的元素就是一个普通的PHP数组,键是...

    解析PHP将对象转换成数组的方法(兼容多维数组类型)

    因此,深入理解对象转换成数组的过程,并掌握如何兼容多维数组类型,对于进行数据处理的PHP开发者来说是非常重要的。 首先,要进行对象到数组的转换,我们通常会使用PHP内置的`get_object_vars`函数。这个函数可以...

    php三联地区数组版和数组转换js代码

    由于JavaScript不能直接理解PHP的数据结构,所以需要将PHP的数组转换成JSON格式,这是JavaScript能够识别的数据格式。 转换过程大致如下: 1. PHP端,将三联地区数组转换成JSON字符串,可以使用PHP的`json_encode()...

    php多层数组与对象的转换实例代码

    简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力。 通过json_decode(json_encode($object)可以将对象一次性转换为数组,但是object中遇到非utf-8编码的非ascii字符则会出现问题,...

    PHP之数组学习

    在PHP中,数组是一种非常灵活的数据类型,它不仅可以存储简单的数据类型如字符串和数字,还可以存储复杂的对象、其他数组等。数组的索引可以是整数也可以是字符串,因此PHP的数组是真正的关联数组。此外,PHP数组还...

    PHP二维数组形成XML内容形式

    在这个场景中,我们将探讨如何使用PHP将二维数组转换为XML内容。 首先,我们需要理解二维数组的基本概念。在PHP中,二维数组是一个数组,其中的每个元素也是一个数组,形如: ```php $array = array( array('key1...

Global site tag (gtag.js) - Google Analytics