php对象(object)与数组(array)的区别以及转换
php中对象和数组的区别
对象不仅有属性,还有⽅法;,对象可以封装对这些数据的操作,⽽数组是办不到的。
因此:如果是单纯存数据,就⽤数组,但如果你要定义对这些数据的操作,更建议使⽤对象!
举例:
如果你想在操作的数据⾥加个通⽤的⽅法,⽐如返回值是加密的,或者其它等等功能,这时候可以考虑写个类,返回数据的时候使⽤对象的相应⽅法即可得到想要的数据。
如果从框架设计、扩展的⾓度来说,还是能⽤对象就⽤对象,⽅便扩展维护。⽐如你代码⾥到处⽤的都是数组,有⼀天接⼝返回的数据变了,你要修改很多。 如果⽤对象的话修改的⼯作量会⼩⼀些。
PHP数组是⽤hash table来实现的,它的增删基本可以在O(1)内完成。
PHP数组的for遍历是按key⼤⼩遍历,慢于foreach。
PHP数组的foreach遍历是按插⼊先后遍历,最快的PHP数组遍历。
数组对象的底层结构
数组对象的转换
/**
* 数组转对象
*
* @param array $arr 数组
* @return object
*/
function array_to_object($arr) {
if (gettype($arr) != 'array') {
return;
}
foreach ($arr as $k => $v) {
if (gettype($v) == 'array' || getType($v) == 'object') { $arr[$k] = (object)array_to_object($v);
}
object to}
return (object)$arr;
}
/**
* 对象转数组
*
* @param object $obj 对象
* @return array
*/
function object_to_array($obj) {
$obj = (array)$obj;
foreach ($obj as $k => $v) {
if (gettype($v) == 'resource') {
return;
}
if (gettype($v) == 'object' || gettype($v) == 'array') { $obj[$k] = (array)object_to_array($v);
}
}
return $obj;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论