Php 递归函数并添加到数组中
我需要递归函数将元素添加到数组中。这是我的代码:Php 递归函数并添加到数组中,php,arrays,recursion,Php,Arrays,Recursion,我需要递归函数将元素添加到数组中。这是我的代码: $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;
$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>';
$array_final=array();
$counter=1;
函数get_previuos_levels($first_available_place_x,$first_available_place_y,$array_final,$counter){
$new\u x=$first\u available\u place\u x-1;
$devider=$first\u available\u place\u y/3;
$new_y=ceil($devider);
//echo$new_x;
//回声“
”;
$array_final = array();
$counter = 1;
function get_previuos_levels($first_available_place_x, $first_available_place_y) {
$new_x = $first_available_place_x-1;
$devider = $first_available_place_y/3;
$new_y = ceil($devider);
$array_key = 1;
for($value = $new_x; $value > 0; $value--) {
$array_final['x_coor'][$array_key] = $value;
$array_final['y_coor'][$array_key] = $new_y;
$devider = $new_y/3;
$new_y = ceil($devider);
$array_key++;
}
return $array_final;
}
$result = get_previuos_levels($first_available_place_x, $first_available_place_y);
echo '<pre>';
print_r($result);
echo '</pre>';
//echo$new_y;
如果($new_x>1){
$array_final['value'][$counter]=$new_x.-'.$new_y;
$counter++;
获取上一级($new\ux、$new\uy、$array\u final、$counter);
}
返回$array\u final;
}
$result=get_previous_levels(3,5,$array_final,$counter);
回声';
$array_final = array();
$counter = 1;
function get_previuos_levels($first_available_place_x, $first_available_place_y) {
$new_x = $first_available_place_x-1;
$devider = $first_available_place_y/3;
$new_y = ceil($devider);
$array_key = 1;
for($value = $new_x; $value > 0; $value--) {
$array_final['x_coor'][$array_key] = $value;
$array_final['y_coor'][$array_key] = $new_y;
$devider = $new_y/3;
$new_y = ceil($devider);
$array_key++;
}
return $array_final;
}
$result = get_previuos_levels($first_available_place_x, $first_available_place_y);
echo '<pre>';
print_r($result);
echo '</pre>';
打印(结果);
回声';
$array_final = array();
$counter = 1;
function get_previuos_levels($first_available_place_x, $first_available_place_y) {
$new_x = $first_available_place_x-1;
$devider = $first_available_place_y/3;
$new_y = ceil($devider);
$array_key = 1;
for($value = $new_x; $value > 0; $value--) {
$array_final['x_coor'][$array_key] = $value;
$array_final['y_coor'][$array_key] = $new_y;
$devider = $new_y/3;
$new_y = ceil($devider);
$array_key++;
}
return $array_final;
}
$result = get_previuos_levels($first_available_place_x, $first_available_place_y);
echo '<pre>';
print_r($result);
echo '</pre>';
基本上,如果我回显$new_x和$new_y,我就会得到我所期望的。
问题是我的$result数组,它只给我第一个项目(2-2),但第二个项目缺少(1-1)。我想问题在于将项添加到数组中,但找不到问题。如果有人需要,我找到了解决方案
$array_final=array();
$counter=1;
函数get_previuos_levels($first_available_place_x,$first_available_place_y){
$new\u x=$first\u available\u place\u x-1;
$devider=$first\u available\u place\u y/3;
$new_y=ceil($devider);
$array_key=1;
对于($value=$new\u x;$value>0;$value--){
$array\u final['x\u coor'][$array\u key]=$value;
$array\u final['y\u coor'][$array\u key]=$new\u y;
$devider=$new_y/3;
$new_y=ceil($devider);
$array_key++;
}
返回$array\u final;
}
$result=get_previous_levels($first_available_place_x,$first_available_place_y);
回声';
$array_final = array();
$counter = 1;
function get_previuos_levels($first_available_place_x, $first_available_place_y) {
$new_x = $first_available_place_x-1;
$devider = $first_available_place_y/3;
$new_y = ceil($devider);
$array_key = 1;
for($value = $new_x; $value > 0; $value--) {
$array_final['x_coor'][$array_key] = $value;
$array_final['y_coor'][$array_key] = $new_y;
$devider = $new_y/3;
$new_y = ceil($devider);
$array_key++;
}
return $array_final;
}
$result = get_previuos_levels($first_available_place_x, $first_available_place_y);
echo '<pre>';
print_r($result);
echo '</pre>';
打印(结果);
回声';
$array_final = array();
$counter = 1;
function get_previuos_levels($first_available_place_x, $first_available_place_y) {
$new_x = $first_available_place_x-1;
$devider = $first_available_place_y/3;
$new_y = ceil($devider);
$array_key = 1;
for($value = $new_x; $value > 0; $value--) {
$array_final['x_coor'][$array_key] = $value;
$array_final['y_coor'][$array_key] = $new_y;
$devider = $new_y/3;
$new_y = ceil($devider);
$array_key++;
}
return $array_final;
}
$result = get_previuos_levels($first_available_place_x, $first_available_place_y);
echo '<pre>';
print_r($result);
echo '</pre>';
您的内部调用需要是$array\u final=get\u previous\u levels($new\u x,$new\u y,$array\u final,$counter)代码>。否则,你就是在扔掉它所做的任何更改。这是否回答了你的问题?您还可以使用array\u walk\u recursiveI从数据库中动态获取这些值并添加到内部函数:$result=get\u previous\u levels($first\u available\u place\u x,$first\u available\u place\u y,$array\u final,$counter);