【发布时间】:2021-01-17 08:38:32
【问题描述】:
我需要递归函数来将元素添加到数组中。这是我的代码:
$array_final = array();
$counter = 1;
function get_previuos_levels($first_available_place_x, $first_available_place_y, $array_final , $counter) {
$new_x = $first_available_place_x-1;
$devider = $first_available_place_y/3;
$new_y = ceil($devider);
//echo $new_x;
//echo '<br>';
//echo $new_y;
if($new_x > 1) {
$array_final['value'][$counter] = $new_x . ' - ' . $new_y;
$counter++;
get_previuos_levels($new_x, $new_y, $array_final , $counter);
}
return $array_final;
}
$result = get_previuos_levels(3, 5, $array_final , $counter);
echo '<pre>';
print_r($result );
echo '</pre>';
基本上,如果我回显 $new_x 和 $new_y,我会得到我所期望的。 问题是我的 $result 数组,它只给了我第一项(2 -2),但第二项丢失了(1 -1)。我猜问题在于将项目添加到数组中但找不到问题。
【问题讨论】:
-
您的内部呼叫需要是
$array_final = get_previuos_levels($new_x, $new_y, $array_final , $counter);。否则,您只是丢弃了它所做的任何更改。 -
你也可以使用array_walk_recursive
-
我从数据库中动态获取这些值并添加到内部函数中: $result = get_previuos_levels($first_available_place_x, $first_available_place_y, $array_final , $counter);