php将对象强制转数组的方法:1、通过定义的“object_array”方法转换;2、通过“json_decode”方法转换;3、通过定义的“object2array_pre”方法转换。

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

php的对象转数组

1.//PHP stdClass Object转array

function object_array($array) {

if(is_object($array)) {

$array = (array)$array;

}

if(is_array($array)) {

foreach($array as $key=>$value) {

$array[$key] = object_array($value);

}

}

return $array;

}

2.$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);

3.function object2array_pre(&$object) {

if (is_object($object)) {

$arr = (array)($object);

} else {

$arr = &$object;

}

if (is_array($arr)) {

foreach($arr as $varName => $varValue){

$arr[$varName] = $this->object2array($varValue);

}

}

return $arr;

}

4.如果是10W的数据量的话,执行要进1s,结构再复杂些,可以达到3s,性能太差了,可以用以下替换:function object2array(&$object) {

$object = json_decode( json_encode( $object),true);

return $object;

}

json_decode(json_encode($array),true)

多层数组和对象转化的用途很简单,便于处理WebService中多层数组和对象的转化【推荐学习:《PHP视频教程》】

简单的(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怎么将对象强制转数组相关推荐

  1. php7对象转换成数组,php 如何把对象转换成数组对象

    php把对象转换成数组对象的方法:首先打开相应的PHP代码文件:然后通过"function array_to_object($arr){...}"方法把对象转换成数组即可. 本文操 ...

  2. html 判断是否在 数组,javascript如何判断对象是否是数组?

    JavaScript变量能够保存多种数据类型:数值.字符串值.数组.对象等等,有时我们需要知道变量中所存储的数据类型,我们该如何判断数据类型呢? 就算变量定义的是数组格式,typeof返回的数据类型还 ...

  3. java把对象放入数组_如何将对象添加到数组

    使用Array.push()将任何东西放入数组. var a=[], b={}; a.push(b); // a[0] === b; 有关数组的更多信息 一次添加多个项目 var x = ['a']; ...

  4. ts定义数组类型_TS的对象类型、数组类型、函数类型

    对象类型 基础使用 在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型. 简单例子: interface Person { name: string; age: num ...

  5. 删除数组中某个指定元素或删除数组中某个对象元素

    ES6--删除数组中某个指定元素或删除数组中某个对象 1.删除数组中某个指定元素 2.删除数组中的某个对象 1.删除数组中某个指定元素 let index = this.array.indexOf(n ...

  6. arr数组怎么取值_JS 面试之数组的几个不 low 操作

    前言 本文主要从应用来讲数组api的一些骚操作,如一行代码扁平化n维数组.数组去重.求数组最大值.数组求和.排序.对象和数组的转化等. 上面这些应用场景你可以用一行代码实现吗? 1.扁平化n维数组 1 ...

  7. Java常用知识点汇总(基础:数组,类与对象,接口与继承)

    目录 数组 1.引用 2.增强型for循环 3.复制数组 arraycopy() 4.针对数组的工具类 Arrays 5.选择法排序 6.冒泡排序 7.练习-二维数组中的查找(剑指offer) 类与对 ...

  8. java数组是不是对象_java的数组是对象吗

    数组是对象哦.数组的父类也是Object,每个数组都实现了接口Cloneable and java.io.Serializable.java中数组的创建使用了关键字new,虽然格式和普通的类创建的方式 ...

  9. 当 Vue 处理数组与处理纯对象的方式一样

    处理数组方法的弊端 Vue 在响应式的处理中,对数组与对象采用了不同的方式,如下源码所示: if (Array.isArray(value)) {const augment = hasProto? p ...

最新文章

  1. C语言回溯算法解决N皇后问题
  2. ThreadLocal使用
  3. webalizer日志分析软件的安装
  4. 浅谈机房常遇问题及解决方案
  5. 浅谈PHP面向对象编程(九)
  6. 渝粤教育 陕西师范大学 《初级微观经济学》作业
  7. python网站模板下载_Python画图模板大全:从此画图不用愁
  8. 轴固定位置_何为轴?来看看你对轴了解了么
  9. 解决js动态改变dom元素属性后页面及时渲染问题
  10. 【情感分析】情感分析研究的新视野
  11. Atitti.java android反编译解决方案-----虚拟机方案
  12. 《wireshark》怎么抓包
  13. 策略盈亏分布统计——从零到实盘11
  14. java深克隆 浅克隆_通过Java中深克隆与浅克隆来理解克隆
  15. winsxs是什么文件夹 Winsxs文件夹可以删除吗
  16. 图像处理那张熟悉的面孔——Lena
  17. 中航重机 600765
  18. 将Maven仓库地址修改为阿里云的仓库地址
  19. rosdep update 使用小鱼fishros解决ros1/ros2问题 2022
  20. 满足条件的数累加(YZOJ-1066)

热门文章

  1. 在子类中调用父类的方法super
  2. 初入java编程-面向对象
  3. python测试报告
  4. 如何不使用让menu控件不回发(postback)
  5. Android一个Activity多个Handler时,Message消息是否会混乱?
  6. java基础—采用递归的方式来获取相关目录下的子目录的名称
  7. Html和CSS在浏览器中常见的兼容性问题处理
  8. day4作业(基本运算流程if for)
  9. PHP反射原理的实现
  10. 【算法】数组与矩阵问题——找到无序数组中最小的k个数