$res=array();

foreach($arr as $k=>$v){

   if(isset($v['sonid'])&&$v['sonid']!=0){

       $arr[$k]['son']=&$arr[$v['sonid']]

   }else{

       $res[]=&$arr[$k]

   }

}