我希望在二叉树中得到父亲的所有下线,每个父亲都有左右手臂,每个手臂都有左右手臂等。 like the following image。 在我的数据库中,我有一个名为users的表,每个用户都有一个父ID和位置,即L或R.
这是我的功能..但它仍然没有得到所有下线。 like the following image
答案 0 :(得分:1)
有两件事让我感到高兴:
$this->downline_id_arr
参数和$children = array();
foreach($data as $row) {
$child_id = $row->id;
$children[$child_id] = array(/**/);
$children = array_merge($children, $this->getAllDownline($child_id);
}
return $childen;
。考虑一下:
$i
现在您不需要$this->downline_id_arr
变量或function getAllDownlines($fathers) {
$data = "SELECT * FROM users WHERE father_id IN (/*fathers*/)";
$new_father_ids = array();
$children = array();
foreach ($data as $child) {
$children[$child->id] = array(/**/); // etc
$new_father_ids[] = $child->id;
}
$children = array_merge($children, $this->getAllDownlines($new_father_ids);
return $childen;
}
。
请考虑按级别查询:
$scope.posaljiKontroleru = function () {
$scope.prosek = {kalorije: 0.0, proteini: 0.0, uh: 0.0, masti: 0.0};
$http({
method: 'POST',
url: 'http://localhost/psi/Pravljenjejela/dodajBazi',
data: $scope.prosek
}).then(function (res) {
$window.location.href = "http://localhost/psi/Pravljenjejela/dodajBazi";
}, function (err) {
console.log(err);
});
});
}
通常较少的查询更快,因此您应该看到更好的性能。