最新消息:

关于php递归(数组重组)

php 桔子的桔子 1499浏览 0评论

最近要弄一个根据一定条件的数据筛选分组(一级分类分组)

首先条件我先把分类数组以及数组一次性查出来

$MTYPE = array (
   array( 'typeid' => 1,'typename' => '分类1','parentid' => 0),
   array( 'typeid' => 2,'typename' => '分类2','parentid' => 0),
   array( 'typeid' => 3,'typename' => '分类1-1','parentid' => 1),
   array( 'typeid' => 4,'typename' => '分类2-1','parentid' => 2),
   array( 'typeid' => 5,'typename' => '分类1-1-1','parentid' => 1)
);
$res = array(
   array('itemid'=>1,'title'=>'产品1','typeid'=>1),
   array('itemid'=>2,'title'=>'产品2','typeid'=>3),
   array('itemid'=>3,'title'=>'产品3','typeid'=>4),
   array('itemid'=>4,'title'=>'产品4','typeid'=>5),
);

然后写个方法重组数组。。。

$data = array();
foreach($res as $v){
   $key = getParentId($MTYPE,$v['typeid']);
   $data[$key][] = $v;
}

function getParentId($MTYPE,$id){
   foreach($MTYPE as $v){
      if($v['typeid']==$id){
         if($v['parentid'] == 0){
            return $id;
         }else{
            //当初在这里没有return,导致二级以及下面的子分类一直没返回数组。纠结了一阵子
            return getParentId($MTYPE,$v['parentid']);
         }
      }
   }
}
var_dump($data);

下面的继续 getParentId这个方法必须要return,不然会一直没有返回结果返回。。。老手就不用看了,我是新手写这个也当作是教训

 

转载请注明:桔子的桔子 » 关于php递归(数组重组)

您必须 登录 才能发表评论!