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 關注
- 124 瀏覽
添加回答
舉報