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);