通常在php中,想把对象处理成数组是需要花费点精力的。
    但是今天在这里,我告诉你一个so easy的黑技术来解决这个问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
/**
 * Created by PhpStorm.
 * User: zrj
 * Date: 17-10-20
 * Time: 下午8:08
 */
declare(strict_types=1);//开启强类型模式
class Person
{
    public $name;
    public $age;
    public function __construct(string $name,int $age)
    {
        $this->name = $name;
        $this->age = $age;
    }
}
$jack new Person('Jack', 18);
echo print_r($jack, true);
echo "<p>";
//对象转数组
$jack = json_decode(json_encode($jack), true);
echo print_r($jack, true);

来看看结果:

1
2
3
4
5
6
7
8
9
10
11
Person Object
(
    [name] => Jack
    [age] => 18
)
Array
(
    [name] => Jack
    [age] => 18
)

思路分析:

  1. 先将对象进行json_encode处理为json字符串。

  2. 将转换后json字符串进行json_decode处理。

    json_decode(json_encode($obj),true);



总结:

优点:简单快捷。

缺点:会消耗double倍的内存。

正确的Get姿势:   

对象本身占内存小时,可以直接使用。

对象本身占内存大的时候(如几千条记录组成数据集对象),占用两倍的内存可能会造成超出php的内存限制,出现异常。


故遇到大体量对象时,不建议使用。

本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/1974734,如需转载请自行联系原作者

php对象转数组的黑技术相关推荐

  1. JavaScript 对象与数组参考大全

    http://www.cnblogs.com/meil/archive/2006/06/28/437527.html本文列举了各种JavaScript对象与数组,同时包括对上述每一对象或数组所完成工作 ...

  2. JavaScript(第七天)【对象和数组】

    什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称做为类,但ECMAScript中却没有这种 ...

  3. JavaScript学习(七)——对象与数组、内部对象(1)

    目录 javascript对象与数组 javascript内部对象 object对象 1.创建object对象 2.object对象的属性 3.object对象的方法 String对象 1.创建Str ...

  4. UML2面向对象分析与设计 -- 面向对象思维(概念、面向对象技术的发展历史、对象和类、面向对象技术的相关原则:抽象 封装 分解 泛化 多态 分层 复用)

    文章目录 1. UML2面向对象分析与设计 学习目标 2. 面向对象思维 2.1 学习目标 2.2 什么是面向对象 2.3 面向对象技术的发展历史 2.4 面向对象技术的优势 2.4.1 便于沟通:在 ...

  5. php一个数组赋值给对象,php数组与对象相互转换方法

    php教程数组与对象相互转换方法 function arrayToObject($e){ if( gettype($e)!='array' ) return; foreach($e as $k=> ...

  6. JS如何深度复制对象和数组,避免指针变量引用修改值

    //自定义深度复制对象or数组的递归方法---------------------------------------- let copyObjOrArr = o => {let isArray ...

  7. json vue 对象转数组_vue 基础入门(一)修改

    vue基础入门(一) 1. 什么是vue Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标 ...

  8. php json 数组 区别,PHP实战:JSON两种结构之对象和数组的理解

    <PHP实战:JSON两种结构之对象和数组的理解>要点: 本文介绍了PHP实战:JSON两种结构之对象和数组的理解,希望对您有用.如果有疑问,可以联系我们. JSON简介 PHP实战JSO ...

  9. 【性能优化】面试官:Java中的对象和数组都是在堆上分配的吗?

    写在前面 从开始学习Java的时候,我们就接触了这样一种观点:Java中的对象是在堆上创建的,对象的引用是放在栈里的,那这个观点就真的是正确的吗?如果是正确的,那么,面试官为啥会问:"Jav ...

最新文章

  1. 为什么Java进程使用的RAM比Heap Size大?
  2. LeetCode_数组_中等题
  3. 经典C语言程序100例之七一
  4. linux安装python_Python - 爱豆
  5. python数据按照分组进行频率分布_python实现读取类别频数数据画水平条形图
  6. 记几种解决跨域问题的办法
  7. ENVI实验教程(7)实验七、遥感影像变化检测
  8. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_05.mybatis环境搭建-前期准备
  9. c++ socket线程池_Netty(3)——Reactor线程模型
  10. react-redux的todolist(b站笔记)-(四)
  11. 经典合成器插件 – LennarDigital Sylenth1 2.2.1 WiN-MAC
  12. EndnoteX7/8/9参考文献不按顺序出现
  13. jsmind 线条_jsmind实例扩展(思维导图)
  14. 3套鱼塘合作引流话术模板?
  15. 2020前端开发面试题总结(最新)
  16. html 加载c盘下的图片,SpringBoot取本地(服务器)的图片展示在html页面解决办法...
  17. VirtualApp hook so及activity回调
  18. 如何解决用户对浏览器进行缩放或滚动鼠标滑轮、或调节屏幕显示百分比后,页面变形或显示不全
  19. html alert字体颜色,js里alert里的字体颜色怎么设置:字体颜色方法;fontcolor(color)...
  20. 用matlab解决多重共线性问题,多重共线性和非线性回归的问题

热门文章

  1. bootstrap绿色大气后台模板下载[转]
  2. Http Tunnel 小记
  3. Selenium最全超时等待问题的处理方案
  4. C# 8的新提案:new关键字类型推断
  5. python中文字符编码问题
  6. 【OSS 排查方案-5】透过现象看本质之网络排查分析
  7. PHP编译遇到的问题
  8. IOS7为什么遭吐槽?
  9. linux 数组的简单总结
  10. readonly 和 disable的区别