1. 程式人生 > >Think PHP遞歸獲取所有的子分類的ID (刪除當前及子分類)

Think PHP遞歸獲取所有的子分類的ID (刪除當前及子分類)

cti eid 刪除 error return code where arr pre

遞歸獲取所有的子分類的ID:

//遞歸獲取所有的子分類的ID
function get_all_child($array,$id){
    $arr = array();
    foreach($array as $v){
        if($v[‘pid‘] == $id){
            $arr[] = $v[‘id‘];
            $arr = array_merge($arr,get_all_child($array,$v[‘id‘]));
        };
    };
    return $arr;
}

在進行刪除欄目的時候,需要刪除當前欄目下的所有子欄目:

//刪除分類
public function delCate(){
    $get = I(‘get.pid‘);
    $cateId = M(‘category‘)->field(array(‘id‘,‘pid‘))->select();
    $delId = get_all_child($cateId,$get);
    $delId[] = $get;    
    $where = array(
        ‘id‘ => array(‘IN‘,$delId)
    );
    if(!M(‘category‘)->where($where
)->delete()){ $this->error(‘刪除失敗‘); }; $this->success(‘刪除成功‘,U(‘index‘)); }

Think PHP遞歸獲取所有的子分類的ID (刪除當前及子分類)