PHP对象与数组互相转换
工作中不可避免会遇到php对象与数组的相互转化,下边对其方法做了简单的总结。 1.强制转化 arr = (array) obj; obj = (object) arr; 优点:比较简洁 缺点:不能递归转化 适用范围:无嵌套数组,无嵌套类的转化 2.自定义方法 object2array ,arra
PHP
工作中不可避免会遇到php对象与数组的相互转化,下边对其方法做了简单的总结。
1.强制转化
arr = (array) obj; obj = (object) arr;
优点:比较简洁 缺点:不能递归转化 适用范围:无嵌套数组,无嵌套类的转化
2.自定义方法
object2array ,array2object
/* 对象转为数组 */
function object2array ($obj)
{
$ret = array();
foreach ($obj as $key => $value)
{
if (gettype($value) == "array" || gettype($value) == "object") {
$ret[$key] = object2array($value);
} else {
$ret[$key] = $value;
}
}
return $ret;
}
/*数组转对象 */
function array2object ($arr)
{
if (gettype($arr) != 'array') {
return;
}
foreach($arr as $k=>$v)
{
if (gettype($v) == 'array' || getType($v)=='object') {
$arr[$k] = array2object($v);
}
}
return (object) $arr;
}
优点:可以处理嵌套 缺点:需添加对应函数到系统 适用范围:ALL
3.利用内置函数
json_decode(json_encode(arr), false)
json_decode(json_encode(arr), true)
优点:简洁、可处理嵌套 缺点:每次转化都是先执行一次json_encode,再执行一次json_decode,直观判断运行效率会低一些 适用范围:ALL
特别注意:
1.arr = (array) obj;这种转换对象的方法,public、private、protected属性都能转化,而其他两种方法则只能转化public属性
2.无论哪种方法都是只转化类的属性,不转化类的方法
评论与讨论
回复 :
留下你的想法