我在我的遞歸函數中使用了一個foreach
循環。但是我很難搞清楚我的返回聲明在哪裏傳遞。我需要在某個時候回到我的臨時數組,但我不知道如何做到這一點:使用遞歸函數時傳遞臨時數組的位置?
<?php
$patterns = function($array, $temp = array(), $i = 0, $id = 0, $parent = 0) use(&$patterns) {
$return = null;
if(array_key_exists($i, $array)) {
foreach($array[$i] as $set) {
if($parent == $set['id']) {
$data = array(
'id' => $set['id'],
'parent' => $set['parent']
);
array_push($temp, $data);
}
$patterns($array, $temp, $i + 1, $set['id'], $set['parent']);
}
}
};
print_r($patterns($rev_relations));
?>
這是我的數據:
Array(
[0] => Array(
[0] => Array(
[id] => 60
[parent] => 55
)
[1] => Array(
[id] => 57
[parent] => 54
)
)
[1] => Array(
[0] => Array(
[id] => 61
[parent] => 50
)
[1] => Array(
[id] => 54
[parent] => 49
)
)
[2] => Array(
[0] => Array(
[id] => 49
[parent] => 0
)
)
)
可以用來初始化一個例子輸入或相似的,所以我們可以實際運行的代碼? –
在遞歸函數中,所有輸入必須來自參數,所有輸出必須以返回值形式出現。不應考慮其他選項。 – zerkms
zerkms,你是對的。我想我已經封裝了我需要的所有東西。 – HelpNeeder