无限级服务端数据组织方案的实现,提供解决方案,其中数据库查询可替换为List的方式查找等其它方式。
function queryAllSubCustomers($cstId) {
$sqlA="SELECT ID, Name, ParentID FROM T_CustomerInfo WHERE ID = $cstId ";
$custList=Sql_Query($sqlA);
$AllCustInfs=array();
$AllLevelCust=array();
$CurrentLevel=0;
$result=array();
while(count($custList) > 0) {
// 组建当前客户列表,获取所有id
$AllLevelCust[$CurrentLevel]=array();
$countNum = count($custList);
$subCustIds=" (";
//print_r($custList);
for ($i=0; $i<$countNum; $i++) {
$custInf = $custList[$i];
$node=array();
$node['id']=$custInf['ID'];
$node['text']=$custInf['Name'];
array_push($AllCustInfs,$node);
array_push($AllLevelCust[$CurrentLevel],$node);
$subCustIds = $subCustIds.$custInf['ID']."," ;
}
$subCustIds = substr($subCustIds,0,-1).") ";
$CurrentLevel++;
// 查询下级客户
$sql="SELECT ID, Name, ParentID FROM T_CustomerInfo WHERE ParentID <> 0 AND ParentID IN $subCustIds ";
unset($subCustIds);
unset($custList);
$custList=Sql_Query($sql);
//print_r($custList);
}
return $AllCustInfs; //返回全部客户列表
//return $AllLevelCust; //返回按层级划分的客户列表
}
树形结构组织方式:遍历按层级划分的列表,遍历倒数第一层,将倒数第二层的children添加,再依次向上组织,直至第一层添加完children,取第一层的所有结点即可。