我有一个使用邻接列表分层存储数据的表,如下例所示
身份证账户父母 1 根空 2 a1 1 3 b1 1 4 a2 2 5 a3 4 6 a4 2 7 b2 3
还有一张表,我在其中保存这些帐户的值
id_account 值 2 10 2 10 4 20 5 30 6 10
我做了一个函数,它返回给定父帐户的所有子帐户:
function getChildrenAccount($parent_id)
{
$query = "SELECT id, account FROM accounts WHERE parent='{$parent_id}' ORDER BY account";
$result = mysql_query($query) or die(mysql_error());
while($r[]=mysql_fetch_assoc($result));
return $r;
}
我想要做的是一个函数,它不仅返回子帐户,还返回所有值的总和,包括每个结果的子项。例如
getChildrenAccount(4)
将返回具有以下语法的数组
数组(1){ [0]=> 数组(3){ ["id"]=> 5 ["帐户"]=> "a3" [“总和”]=> 50 //a2 + a3 }
和
getChildrenAccount(2)
数组(2){ [0]=> 数组(3){ ["id"]=> 4 ["帐户"]=> "a2" ["sum"]=> 70 //a1 + a2 + a3 [1]=> 数组(3){ ["id"]=> 6 ["帐户"]=> "a4" ["sum"]=> 30 //a1 + a4 }
我想我必须在我的 while 语句中使用某种递归,但我有点困惑。你能帮我吗?
谢谢