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

)

**/

php+对象+toarray_PHP 对象、数组间的转换相关推荐

  1. PHP 对象、数组间的转换

    /** * PHP 对象.数组间的转换 * * @author flyer0126 * @since 2012/05/03 **/ // 1. 利用(array)和(object),简单处理 $obj ...

  2. java集合——集合与数组间的转换+算法

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合--集合与数组间的转换+算法 的相关知识: 0.2) for full sour ...

  3. java基础集合数组间的转换(java集合五)

    数组转变成集合 public static void main(String[] args) {// 如果数组中元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素,// 如果数组中的元素 ...

  4. json字符串、json对象、数组之间的转换

    记录一下 json字符串转化成json对象 // jquery的方法 var jsonObj = $.parseJSON(jsonStr) //js 的方法 var jsonObj = JSON.pa ...

  5. php 多层 对象,php多层数组和对象的转换

    多层数组和对象转化的用途很简单,便于处理WebService中多层数组和对象的转化 简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力. 通过json_dec ...

  6. java String、Json对象与byte数组转换

    用途 测试String对象与byte数组转换方式 测试Json对象与byte数组转换方式 源代码 import java.io.UnsupportedEncodingException; import ...

  7. 【数据格式转换】js如何将对象嵌套的数组数据取出来加到对象里,数据格式转换[{[],[]},{[],[]}] 转[{},{}]

    在前后分离的大背景下,前端数据渲染过程中,有时候后端返回的数据结构并不是前端需要的格式,如果后端不处理,这个时候就需要前端自己处理. 假如拿到的数据是这样的: list:[{id: '01',name ...

  8. 字符串对象转数组对象_js对象转数组的方法 js怎么将数组对象转变成字符串

    只需要一句,arr.__proto__=[];但是要注意浏览器支持__proto__才行,最新的浏览器应该都支持. 以下两种都可以解决此问题: function transform(obj){ var ...

  9. python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)...

    昨日内容回顾 1.三种引入方式1.行内js <div onclick = 'add(3,4)'></div>//声明一个函数function add(a,b){}2.内接js& ...

最新文章

  1. try catch finally语句详解
  2. BM22 比较版本号
  3. Android FrameWork学习(一)Android 7 0系统源码下载 编译
  4. python(9)-变量、input函数
  5. ByteArrayOutputStream和ByteArrayInputStream的简单使用
  6. Django DRF认证组件/权限组件/序列化组件综合总结(完整版)
  7. Python游戏开发实战:飞机大战(含代码)
  8. 基于PyQt5实现保存网页为pdf
  9. 一、super slomo介绍
  10. linux 建立ssh隧道,在Linux、Windows、macOS上创建SSH隧道并通过SSH隧道连接到MySQL
  11. 淘宝天猫x-sign算法
  12. python中binomial_二项堆python实现——eager binomial heap
  13. unable to load Private Key 6572:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\
  14. 块存储、文件存储、对象存储这三者的差别
  15. vue按钮10S秒后禁用
  16. 解决浏览器突然上不了网的问题
  17. 谈谈JS中的函数劫持
  18. 《比尔总动员》截图赢数码大奖
  19. matlab计算幅度
  20. 黑客攻击-程序破解(1)

热门文章

  1. C# 中的数字分隔符 _
  2. 微软为 Visual Studio 推出新的 Razor 编辑器
  3. 抱歉,请不要把 “业务逻辑层” 理解为 “业务中台”
  4. 让我的 .NET Core 博客系统支持 Docker
  5. .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)...
  6. 【.NET Core 跨平台 GUI 开发】第三篇:Gtk# 表格布局与事件处理
  7. 2019 .NET China Conf:路一直都在,社区会更好
  8. 深入探究Kubernetes - 初识容器
  9. 程序员过关斩将--互联网人必备知识cookie和session认证
  10. 使用Kubeadm创建k8s集群之节点部署(三十二)