标记1236

<?php


/*
$level=3;
$arr['children']=array();
$newarr=array();
global $newarr;
for ($i=1;$i<=$level;$i++)
{

    array_push($newarr['children'],$i) ;
    array_push($newarr,$newarr['children']) ;
}
var_dump($newarr);



*/




$order_item = Array ( Array ( 'order_id' => 1111 ,'item_id' => 1, 'pro_id' => 1, 'pro_name' => 1111 ,'buy_num' => 5),
Array ( 'order_id' => 1111 ,'item_id' => 2 ,'pro_id' => 2 ,'pro_name' => 2222, 'buy_num' => 5 ),
Array ( 'order_id' => 2222 ,'item_id' => 3 ,'pro_id' => 1 ,'pro_name' => 2222, 'buy_num' => 1 ),
Array ( 'order_id' => 2222 ,'item_id' => 4 ,'pro_id' => 2 ,'pro_name' => 2222, 'buy_num' => 1 )
);

$dataArr = array(
        array(
        'dept_id'=>1,
        'dept_name'=>'一级菜单 ',
        '_parentId'=>''
        ),
        array(
                'dept_id'=>2,
                'dept_name'=>'1二级菜单1 ',
                '_parentId'=>'1'
        ),
        array(
                'dept_id'=>3,
                'dept_name'=>'1二级菜单2 ',
                '_parentId'=>'1'
        ),
        array(
                'dept_id'=>4,
                'dept_name'=>'一级菜单001 ',
                '_parentId'=>''
        ),
        array(
                'dept_id'=>5,
                'dept_name'=>'4二级菜单0012 ',
                '_parentId'=>'4'
        ),
        array(
                'dept_id'=>6,
                'dept_name'=>'4二级菜单0012 ',
                '_parentId'=>'5'
        ),
        array(
                'dept_id'=>7,
                'dept_name'=>'4二级菜单0012 ',
                '_parentId'=>'6'
        ),
    );



//顶级节点
function getParentArr(&$dataArr){
    
    $parentArr = array();//顶级节点
    
    foreach($dataArr as $key=>$arr)
    {
        if($arr['_parentId'] =='' ){
            array_push($parentArr,$arr);
            unset($dataArr[$key]);
        }
    }
    $dataArr = array_values($dataArr);//剩余子节点 重建索引
    return $parentArr;
}

$parentArr = getParentArr($dataArr);
//var_dump($dataArr);
echo '顶级目录BE<br>';
var_dump($parentArr);
echo '顶级目录END<br>';


//二级目录
static $level=0;
$secondArr=array();
function getSecondArr(&$parentArr,&$dataArr)
{
    global $secondArr;
    
    foreach ($parentArr as $pkey=>$pval)
    {
        $pval['children']=array();
        
        
         
        foreach ($dataArr as $key=>$val){
          if($val['_parentId'] == $pval['dept_id'] ){
               array_push($pval['children'],$dataArr[$key]);
               
             unset($dataArr[$key]);
          }
          
          
       }
       
       array_push($secondArr,$pval);
    }
    
    
    
    //三级开始
    
    if (count($dataArr)>0)
    {
        getSecondArr($parentArr['children'],$dataArr);
    }
    
    
    
    var_dump($dataArr);
    return     $secondArr;
    
}

//二级
$secondArr = getSecondArr($parentArr,$dataArr);

var_dump($secondArr);


foreach ($secondArr as $skey=>$sval){
    
    
}





exit;





global $dataArr;
$resultArr=array();
foreach($parentArr as $pkey=>$pVal)
{

    $pVal['children']=array();
    foreach($dataArr as $key => $arr){
        
        if ($pVal['dept_id'] == $arr['_parentId'] ) {
            
            array_push($pVal['children'],$dataArr[$key]);
            
            unset($dataArr[$key]);
          }
    }
    
   /*foreach($pVal['children'] as $Ckey=>$Cval)
   {
        $Cval['children']=array();
        foreach ($dataArr as $lkey => $larr){
            
            if($Cval['dept_id'] == $larr['_parentId']){
                array_push($Cval['children'],$dataArr[$lkey]);
                unset($dataArr[$lkey]);
                array_push($pVal['children'],$Cval);
            }
         }
     //var_dump($val);
   }*/
  // var_dump($pVal);
  
   $pVal =  arrayChildren($pVal,$dataArr);
  //$pVal =  recursionArr($pVal,$dataArr);
   var_dump($pVal);

}

//$pVal =  arrayChildren($pVal,$dataArr);
   echo '剩余的arr';
    var_dump($dataArr);
   echo '剩余的arr_end';


   
   //递归调用 
   function recursionArr(&$arr,&$larrs)
   {
        arrayChildren($arr,$larrs);
        
        if (count(&$larrs)>0)
        {
            recursionArr($arr,$larrs);
        }
   }
   
   
   
function arrayChildren(&$arr,&$larrs)
{
    echo 'arrayChildren';
    if (is_array($arr['children'])){
        
      foreach($arr['children'] as $key=>$val)
        {
            $val['children']=array();
            foreach ($larrs as $lkey => $larr){

                /*echo '<br>lkey_beg';
                var_dump($larr);
                echo '<br>lkey_end';
                */
                if($val['dept_id'] == $larr['_parentId']){
                    //global $larrs;
                    array_push($val['children'],$larrs[$lkey]);
                    unset($larrs[$lkey]);
                    array_push($arr,$val);
                    
                }
            }
        }
        
        
     }
     //var_dump('count'.count(&$larrs));
    
        echo '<br>a<br>';
        var_dump($larrs);    
        echo 'b<br>';
        
     return $arr;
     
}










//分组问题

exit;

$rows = array(
        array("id"=>1, "type"=>1, "value"=>"a"),
        array("id"=>2, "type"=>1, "value"=>"b"),
        array("id"=>3, "type"=>1, "value"=>"c"),
        array("id"=>7, "type"=>3, "value"=>"c"),
        array("id"=>8, "type"=>7, "value"=>"c"),

        array("id"=>4, "type"=>2, "value"=>"d"),
        array("id"=>5, "type"=>2, "value"=>"e"),
        array("id"=>6, "type"=>2, "value"=>"f"),
);
$keys = array("id","type");

function groupByKeys($rows,$keys,$ext='_') {
    $res = array();
    foreach($rows as $row) {
        $tmp = $row;
        foreach($keys as $k) {
            //为了利用array_merge_recursive方法的特性,使用非数字的键
            $tmp = array($k.$ext.$row[$k] => $tmp);
        }
        $res = array_merge_recursive($res,$tmp);
    }
    $replace_keys = array();
    foreach($keys as $k) {
        $replace_keys[] = $k.$ext;
    }
    $str = str_replace($replace_keys,'',json_encode($res));
    return json_decode($str,true);
}

var_dump(groupByKeys($rows,$keys));












//var_dump($resultArr);
exit;

function generateTree($items){
    $tree = array();
    foreach($items as $item){
        if(isset($items[$item['pid']])){
            $items[$item['pid']]['children'][] = &$items[$item['id']];
        }else{
            $tree[] = &$items[$item['id']];
        }
    }
    return $tree;
}
$items = array(
        1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),
        2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),
        3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),
        4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),
        5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),
);
var_dump(generateTree($items));
原文地址:https://www.cnblogs.com/hubing/p/3988938.html