Passed
Push — master ( a68137...f0b2de )
by ma
02:12
created

ArrayTool::objectToArray()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 6
c 1
b 0
f 0
nc 3
nop 1
dl 0
loc 9
rs 10
1
<?php
2
namespace tinymeng\tools;
3
4
/**
5
 * Name: Tool.php.
6
 * Author: JiaMeng <[email protected]>
7
 * Date: 2018/8/17 14:20
8
 * Description: Tool.php.
9
 */
10
11
class ArrayTool{
12
13
    /**
14
     * @param $arr
15
     * @param $keys
16
     * @param $type
17
     * @return array
18
     */
19
    static public function arraySort($arr,$keys,$type='asc'){
20
        $keysValue = $newArray = array();
21
        foreach ($arr as $k=>$v){
22
            $keysValue[$k] = $v[$keys];
23
        }
24
        if($type == 'asc'){
25
            asort($keysValue);
26
        }else{
27
            arsort($keysValue);
28
        }
29
        reset($keysValue);
30
        foreach ($keysValue as $k=>$v){
31
            $newArray[$k] = $arr[$k];
32
        }
33
        return $newArray;
34
    }
35
36
    /**
37
     * Description:  获取菜单树结构
38
     * Author: JiaMeng <[email protected]>
39
     * Updater:
40
     * @param array $list 数据list
41
     * @param string $filed 主键字段
42
     * @param string $parent_filed 父节点字段
43
     * @param int $parent_id 父id值
44
     * @return array
45
     */
46
    public static function getTreeStructure($list,$filed='id',$parent_filed='pid',$parent_id=0){
47
        $result = array();
48
        if(!empty($list)){
49
            foreach($list as $key=>$val){
50
                if($val[$parent_filed] == $parent_id){
51
                    $val['child'] = self::getTreeStructure($list,$filed,$parent_filed,$val[$filed]);
52
                    if(empty($val['child'])){
53
                        unset($val['child']);
54
                    }
55
                    $result[] = $val;
56
                }
57
            }
58
        }
59
        return $result;
60
    }
61
62
    /**
63
     * Description:  对象到数组转换
64
     * Author: JiaMeng <[email protected]>
65
     * Updater:
66
     * @param $obj
67
     * @return array
68
     */
69
    public static function objectToArray($obj){
70
        if(!is_object($obj) && !is_array($obj)) {
71
            return $obj;
72
        }
73
        $arr = array();
74
        foreach($obj as $k => $v){
75
            $arr[$k] = self::objectToArray($v);
76
        }
77
        return $arr;
78
    }
79
80
    /**
81
     * 空数组转为object
82
     * 给安卓出接口时部分要求[]返回{}(数组返回字典类型)
83
     * @Author: TinyMeng <[email protected]>
84
     * @param $data
85
     */
86
    public static function nullArrayToObject(&$data){
87
        foreach ($data as $key=>&$val){
88
            if(is_array($val)){
89
                if(empty($val)){
90
                    settype($val,'object');
91
                }else{
92
                    self::nullArrayToObject($val);
93
                }
94
            }
95
        }
96
    }
97
98
}
99