PHP中把对象转数组的几个方法

    /**
     * 将对象转换成数组
     * @param $obj
     * @return mixed
     */
    function object_to_array($obj){
        $_arr = is_object($obj) ? get_object_vars($obj) :$obj;
        foreach ($_arr as $key=>$val){
            $val = (is_array($val) || is_object($val)) ? $this->object_to_array($val):$val;
            $arr[$key] = $val;
        }
        return $arr;
    }

    /**
     * 将二维数组组装成三维数组
     * @param $arr
     * @param $key
     * @return array
     */
    function changeTwoToThree($arr, $key) {
        $new = [];
        for ($i = 0; $i < count($arr); $i++) {
            if (array_key_exists($arr[$i][$key], $new)) {
                array_push($new[$arr[$i][$key]], $arr[$i]);
            } else {
                $new[$arr[$i][$key]][0] = $arr[$i];
            }
        }
        return $new;
    }

    /**
     * 处理数组
     * @param $arr
     * @param $key
     * @return mixed
     */
    function handleArray($arr, $key) {
        for($i=0;$i<count($arr);$i++) {
            $arr[$i] = $this->changeTwoToThree($arr[$i], $key);
        }
        return $arr;
    }

    /**
     * 将数组的key恢复成数字序列
     * @param $arr
     * @return array
     */
    function restore_array($arr){
        if (!is_array($arr)){ return $arr; }
        $c = 0; $new = array();
        foreach ($arr as $key => $value) {
            if (is_array($value)){
                $new[$c] = restore_array($value);
            }
            else { $new[$c] = $value; }
            $c++;
        }
        return $new;
    }

    /**
     * 将数组的key恢复成数字序列
     * @param $arr
     * @return array
     */
    function restore_array2($arr) {
        foreach($arr as $value){
            $new[] = $value;
        }
        return $new;
    }

    /**
     * 将数组的key恢复成数字序列
     * @param $arr
     * @return mixed
     */
    function restore_array3($arr) {
        for($i=0;$i<count($arr);$i++) {
            $arr[$i] = $this->restore_array2($arr[$i]);
        }
        return $arr;
    }

    /**
     * 多维数组转二维
     * @param $arr
     * @return array
     */
    function array_unzip_rescursive($arr) {
        $res = array();
        if(array_key_exists('pid', $arr) ){
            $res[] = $arr;
        } else {
            foreach($arr as $item)
                $res = array_merge($res, $this->array_unzip_rescursive($item));
        }
        return $res;
    }

参考文章链接:
https://www.imooc.com/article/32023
https://www.cnblogs.com/bluealine/p/11040928.html
https://www.php.cn/php-sourcecode-43940.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里逆天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值