63 lines
1.5 KiB
PHP
63 lines
1.5 KiB
PHP
<?php
|
|
/**
|
|
* 取出多维数组的值,返回一维数组
|
|
* @param $arr
|
|
* @param array $res
|
|
* @return array
|
|
*/
|
|
function arrayValues($arr, $res = []) {
|
|
$values = array_values($arr);
|
|
$arr = [];
|
|
foreach ($values as &$item) {
|
|
if (is_array($item)) {
|
|
$arr = array_merge($item, $arr);
|
|
} else {
|
|
array_push($res, $item);
|
|
}
|
|
}
|
|
if ($arr) {
|
|
return arrayValues($arr, $res);
|
|
} else {
|
|
return array_values(array_unique($res));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 无限级结构
|
|
* @param array $data 数组
|
|
* @param string $primarykey 主键
|
|
* @param string $parentkey 父级键
|
|
* @param int $pid 父级id
|
|
* @param int $f 级别
|
|
* @return array
|
|
*/
|
|
function getCateList($list, $pid = 0, $primarykey = 'id', $parentkey = 'pid', $f = 0) {
|
|
static $temp = [];
|
|
foreach ($list as $val) {
|
|
if ($val[$parentkey] == $pid) {
|
|
$val['level'] = $f;
|
|
$temp[] = $val;
|
|
getCateList($list, $val[$primarykey], $primarykey, $parentkey, $f + 1);
|
|
}
|
|
}
|
|
return $temp;
|
|
}
|
|
|
|
/**
|
|
* 父子级树状结构
|
|
* @param array $list
|
|
* @param string $primary_key
|
|
* @param string $parent_key
|
|
* @return array|mixed
|
|
*/
|
|
function getTreeList($list, $primary_key = 'id', $parent_key = 'pid') {
|
|
$temp = [];
|
|
foreach ($list as $v) {
|
|
$v['children'] = [];
|
|
$temp[$v[$primary_key]] = $v;
|
|
}
|
|
foreach ($temp as $k => $v) {
|
|
$temp[$v[$parent_key]]['children'][] = &$temp[$v[$primary_key]];
|
|
}
|
|
return isset($temp[0]['children']) ? $temp[0]['children'] : [];
|
|
} |