2 回答
TA贡献1802条经验 获得超6个赞
确保你的函数返回一些东西——在循环完成之后(而不是在——就像你在问题的第一个版本中那样)。
尽管您传递 an 的$array想法是填充它,但您需要确保数组是通过引用传递的,为此您必须使用语法&,否则调用者将看不到更改。
但是,我发现根本不指定该参数更简洁(并且不推荐使用 PHP 的&语法——它有奇怪的副作用)。相反,让函数返回数组。递归调用此函数的代码应采用返回的数组并将其与它自己收集的内容合并:
public function downline($id) {
$lineModel = CLONEAPI::getModel('line');
$data = $lineModel->getAllById($id);
$array = [];
foreach ($data as $child) {
$array[] = $child['downline_id'];
$array = array_merge($array, downline($child['downline_id']);
}
return $array;
}
$result = downline($someParentId);
TA贡献1831条经验 获得超10个赞
你的方法有效!虽然我对它做了一个小的编辑,以将包含现有数据的数组传递给下一个递归调用。
public function downline($id) {
$lineModel = CLONEAPI::getModel('line');
$data = $lineModel->getAllById($id);
$array = [];
foreach ($data as $child) {
$temp[] = $child['downline_id'];
$array = array_merge($array, $temp, downline($child['downline_id']);
}
return $array;
}
$result = downline($someParentId);
之后,我得到了一些重复的 id,我使用 array_unique 从中删除了重复的值。
- 2 回答
- 0 关注
- 97 浏览
添加回答
举报