php 数组复制/拷贝/克隆方案对比大全,如何序列化变量并还原?
发布于 作者:苏南大叔 来源:程序如此灵动~

上一篇文章里面,苏南大叔刚刚说过了普通的php
数组是不需要clone
关键字的。但是,这一篇文章里面,苏南大叔就要继续说明php
数组克隆的方案,是不是有些前后言语不一致呢。这里苏南大叔澄清一下,本文中的数组,也是特殊的数组,即数组中的某个元素是object
的情况。本文中的数组克隆的案例,剧情更加扑朔迷离。欲知详情,请继续查看本文中的内容。

那么,php
数组如何才能复制/拷贝/克隆呢?(名字不一样,其实都是同样的目的,对吧?)请查看苏南大叔独家总结的本文内容。本文测试环境:php7.2
/mac
。
涉及到php
序列化的两个函数是:serialize($变量)
和unserialize($序列化的结果)
。
基本逻辑描述
再次强调一下,本文中的数组,并非是普通的常见php
数组,数组中的某个元素是个object
。数组定义如下:
正确的方案
判断正确的标准,就是修改原版的数组后,克隆的数组并不发生变化。以这个标准看的话,那么可选的正确方案,如下所示:
其中的自定义函数array_copy
定义如下:
newsn.net:这里是【评论】可见内容

错误的方案
这些错误的方案,也是流传于网上的,经过实践,证明是有问题的,大家可以引以为戒。
其中最后一个方案$b9
,如果数组中不出现普通的元素的话,还是可以的。但是,一但出现了普通的原生变量元素。就直接报错了。Uncaught Error: __clone method called on non-object
。

至于其它的错误方案,苏南大叔这里就不截图了,大家可以自行脑补会得到什么样的答案。
newsn.net:这里是【评论】可见内容
结论
只要涉及到object
的克隆,都应该时刻警觉。因为很有可能,代码的运行走势已经偏离了你预设的轨道。
更多苏南大叔编写的php
相关经验文章,请点击这里查看。



学习一下
学习一下
值得学习一下
登录成功,评论一下
学习php数组copy
学习下
学习下
学习下
值得学习一下
w来学习一下