php对象转数组的黑技术
通常在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
)
|
思路分析:
先将对象进行json_encode处理为json字符串。
将转换后json字符串进行json_decode处理。
json_decode(json_encode($obj),true);
总结:
优点:简单快捷。
缺点:会消耗double倍的内存。
正确的Get姿势:
对象本身占内存小时,可以直接使用。
对象本身占内存大的时候(如几千条记录组成数据集对象),占用两倍的内存可能会造成超出php的内存限制,出现异常。
故遇到大体量对象时,不建议使用。
php对象转数组的黑技术相关推荐
- JavaScript 对象与数组参考大全
http://www.cnblogs.com/meil/archive/2006/06/28/437527.html本文列举了各种JavaScript对象与数组,同时包括对上述每一对象或数组所完成工作 ...
- JavaScript(第七天)【对象和数组】
什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称做为类,但ECMAScript中却没有这种 ...
- JavaScript学习(七)——对象与数组、内部对象(1)
目录 javascript对象与数组 javascript内部对象 object对象 1.创建object对象 2.object对象的属性 3.object对象的方法 String对象 1.创建Str ...
- UML2面向对象分析与设计 -- 面向对象思维(概念、面向对象技术的发展历史、对象和类、面向对象技术的相关原则:抽象 封装 分解 泛化 多态 分层 复用)
文章目录 1. UML2面向对象分析与设计 学习目标 2. 面向对象思维 2.1 学习目标 2.2 什么是面向对象 2.3 面向对象技术的发展历史 2.4 面向对象技术的优势 2.4.1 便于沟通:在 ...
- php一个数组赋值给对象,php数组与对象相互转换方法
php教程数组与对象相互转换方法 function arrayToObject($e){ if( gettype($e)!='array' ) return; foreach($e as $k=> ...
- JS如何深度复制对象和数组,避免指针变量引用修改值
//自定义深度复制对象or数组的递归方法---------------------------------------- let copyObjOrArr = o => {let isArray ...
- json vue 对象转数组_vue 基础入门(一)修改
vue基础入门(一) 1. 什么是vue Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标 ...
- php json 数组 区别,PHP实战:JSON两种结构之对象和数组的理解
<PHP实战:JSON两种结构之对象和数组的理解>要点: 本文介绍了PHP实战:JSON两种结构之对象和数组的理解,希望对您有用.如果有疑问,可以联系我们. JSON简介 PHP实战JSO ...
- 【性能优化】面试官:Java中的对象和数组都是在堆上分配的吗?
写在前面 从开始学习Java的时候,我们就接触了这样一种观点:Java中的对象是在堆上创建的,对象的引用是放在栈里的,那这个观点就真的是正确的吗?如果是正确的,那么,面试官为啥会问:"Jav ...
最新文章
- 为什么Java进程使用的RAM比Heap Size大?
- LeetCode_数组_中等题
- 经典C语言程序100例之七一
- linux安装python_Python - 爱豆
- python数据按照分组进行频率分布_python实现读取类别频数数据画水平条形图
- 记几种解决跨域问题的办法
- ENVI实验教程(7)实验七、遥感影像变化检测
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_05.mybatis环境搭建-前期准备
- c++ socket线程池_Netty(3)——Reactor线程模型
- react-redux的todolist(b站笔记)-(四)
- 经典合成器插件 – LennarDigital Sylenth1 2.2.1 WiN-MAC
- EndnoteX7/8/9参考文献不按顺序出现
- jsmind 线条_jsmind实例扩展(思维导图)
- 3套鱼塘合作引流话术模板?
- 2020前端开发面试题总结(最新)
- html 加载c盘下的图片,SpringBoot取本地(服务器)的图片展示在html页面解决办法...
- VirtualApp hook so及activity回调
- 如何解决用户对浏览器进行缩放或滚动鼠标滑轮、或调节屏幕显示百分比后,页面变形或显示不全
- html alert字体颜色,js里alert里的字体颜色怎么设置:字体颜色方法;fontcolor(color)...
- 用matlab解决多重共线性问题,多重共线性和非线性回归的问题