关键词搜索

源码搜索 ×
×

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

发布2020-09-07浏览654次

详情内容

    /**
     * 将对象转换成数组
     * @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

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载