thinkphp5 数组层级缩进转换(可用于分销等级处理)

thinkphp5 数组层级缩进转换(可用于分销等级处理)
 

<!--前端-->  

{volist name='list' id='vo'}
  <td>&nbsp;{$vo.level-1|str_repeat='&nbsp;丨---',###}{$vo.type_name}</td>
{/volist}

<!--后台-->

//商品分类
   public function sort_goods(){
        $data = Db::name('goods_category')->order(['rank' => 'DESC', 'id' => 'ASC'])->select();
        $list = $this->arraylevel($data);
        //标题传值
        return $this->fetch('classify_index',[
            'item'=>['item1'=>'分类','item2'=>'商品分类'],
            'list'=>$list
        ]);
    }

/**
 * 数组层级缩进转换
 * @param array $array 源数组
 * @param int   $pid
 * @param int   $level
 * @return array
 */
function arraylevel($array, $pid = 0, $level = 1)
{
    static $list = [];
    foreach ($array as $v) {
        if ($v['pid'] == $pid) {
            $v['level'] = $level;
            $list[]     = $v;
            arraylevel($array, $v['id'], $level + 1);
        }
    }
    return $list;
}