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.无论哪种方法都是只转化类的属性,不转化类的方法

ABOUT THE AUTHOR

织织

前大厂程序员、AI 工具开发者,正在记录从技术到产品的实践。

关于作者
DISCUSSION

评论与讨论

留下你的想法