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

你可能感兴趣的:(PHP,php,对象,数组)