/**
- 无限分类函数
- @param $items array 原始数据
- @param string $id 主键
- @param string $pid 标识id
- @param bool $closed 超过2级是否显示
- @param string $son 子元素名称
- @param array $strArray 替换信息
- @param bool $is_id text是否拼接id
- @param bool $is_new 是否返回新数组
- @return array
*/
public static function genTree($items, $id = 'id', $pid = 'pid', $closed = false, $son = 'children', $strArray = [], $is_id = false, $is_new = false){
$tree = array(); // 格式化的树
$tmpMap = array(); // 临时扁平数据
$arr = []; //新数组
$arrMap = array(); // 临时扁平数据
foreach ($items as $item) {
if ($strArray) {
foreach ($strArray as $k => $v) {
if ($v === 'text' && $is_id === true) {
$item[$v] = $item[$k] . '--' . $item['id'];
}else {
$item[$v] = $item[$k];
}
}
}
if ($closed === true && isset($item['pid_url'])) {
$count = substr_count($item['pid_url'], ',');
if ($count > 2) {
//是否存在子节点
foreach ($items as $k => $v) {
if ($item[$id] === $v[$pid]) {
$item['state'] = 'closed';
}
}
}
}
$tmpMap[$item[$id]] = $item;
if ($is_new) {
$as = [];
foreach ($strArray as $k => $v) {
$as[$v] = $item[$v];
}
$arrMap[$item[$id]] = $as;
}
}
foreach ($items as $item) {
if (isset($tmpMap[$item[$pid]])) {
$tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]];
$arrMap[$item[$pid]][$son][] = &$arrMap[$item[$id]];
}else {
$tree[] = &$tmpMap[$item[$id]];
$arr[] = &$arrMap[$item[$id]];
}
}
if ($is_new) {
return $arr;
}
return $tree;
}
/**
- 位运算操作处理函数
**/
function myfunction(&$value, $key){
$value="yellow";
}
$a = array("a"=>'red', "b"=>"green", "c"=>"blue");
array_walk($a, "myfunction");
print_r($a);
//结果
Array ( [a] => yellow [b] => yellow [c] => yellow )
最新评论