PHP 循环删除无限分类子节点的实现代码

  

复制代码 代码如下:

  <?php

  private  function _deleteSubNode($ids){

  $subNodes = array();

  $mod = D('Node');

  foreach (explode ( ',', $ids ) as $k){

  $res = $this->_getSubNode($k,$subNodes[$k],$mod);  //获取子节点

  if(!empty($res[0])){

  foreach($res as $k => $nid){

  $mod->where('id = '.$nid)->delete();       //删除子节点

  }

  }

  }

  return ;

  }

  private function _getSubNode($id, &$arr,$mod){

  $condition = array ('pid' => array ('eq', $id ));

  $ret = $mod->where($condition)->getField('id');

  if(!empty($ret[0])){

  foreach ($ret as $k => $node){

  $arr[] = $node['id'];

  $this->_getSubNode($node['id'], $arr, $mod);

  }

  }

  return $arr;

  }

  ?>