/**
* 获取数据树
* @author ztw
* @param $data 分类数组
* @param $parentId 父级id
* @return array
*/
public static function getDataTree($data,$parentId){
$tree = array(); //每次都声明一个新数组用来放子元素
foreach($data as $v){
if($v['parent_id'] == $parentId){ //匹配子记录
$v['children'] = self::getDataTree($data,$v['id']); //递归获取子记录
if($v['children'] == null){
unset($v['children']); //如果子元素为空则unset()进行删除,说明已经到该分支的最后一个元素了(可选)
}
$tree[] = $v; //将记录存入新数组
}
}
return $tree; //返回新数组
}
/**
* 获取父级下所有子级id集合
* @author wbx
* @param $arrData 分类数组
* @param $parentId 父级id
* @return string 子级id集合
*/
public static function getChildrenIds($arrData, $parentId){
$sRetIds = "";
foreach($arrData as $v){
if($v['parent_id'] == $parentId) {
$sChildrenIds = self::getChildrenIds($arrData, $v['id']);
if ($sChildrenIds) {
$sRetIds .= $sRetIds ? "," . $sChildrenIds : $sChildrenIds;
}
$sRetIds .= $sRetIds ? "," . $v["id"] : $v["id"];
}
}
return $sRetIds;
}
/**
* 获取各末级分类以及对应的父级分类名字
* @author ztw
* @param $arrData 分类数组
* @param $parentId 父级id
* @return string 分类组合名字
*/
public static function getParentInfos($arrData, $parentId){
$sString = '';
foreach($arrData as $k=>$v){
if($v['id'] == $parentId) {
$sParentName = self::getParentInfos($arrData,$v['parent_id']);
if ($sParentName) {
$sString .= $sString ?",". $sParentName: $sParentName;
}
$sString .= $sString?",". $v["cname"]: $v["cname"];
}
}
return $sString;
}
/**
* 获取当前记录以及所有父级记录
* @author wbx
* @param $arrClass 分类数组
* @param $id 当前记录id
* @return array 当前记录以及所有父级记录
*/
public static function getParent($arrClass, $id)
{
$arrParent = [];
foreach($arrClass as $k=>$v) {
if ($v["id"] == $id) {
$arrParent[] = $v;
if($v["parent_id"] != 0) {
$arrRet = self::getParent($arrClass, $v["parent_id"]);
$arrParent = array_merge($arrParent, $arrRet);
}
}
}
return $arrParent;
}