【问题标题】:array_push() function not working in recursive functionarray_push() 函数在递归函数中不起作用
【发布时间】:2017-08-04 05:02:59
【问题描述】:

我在 php 中使用递归函数。该函数遍历一个数组并将该数组的一些值输入到一个新数组中。我正在使用array_push() 在新数组中输入值,我也尝试在不使用array_push 的情况下这样做。这是调用递归函数的部分函数

if ($this->input->post('id') != '') {
    $id = $this->input->post('id');

    global $array_ins;
    $k=0;
    $data['condition_array'] = $this->array_check($id, $menus['parents'], $k);

    // trial
    echo "<pre>";
    print_r($menus['parents']);
    print_r($data['condition_array']);die;
    // trial
}

这里是递归函数

function array_check($val, $array_main, $k) {
    // echo $val . "<br>";
    $array_ins[$k] = $val;
    echo $k . "<br>";
    $k++;
    // $array_ins = array_push($array_ins, $val);
    echo "<pre>";
    print_r($array_ins);
    if ($array_main[$val] != '') {
        for ($i = 0; $i < sizeof($array_main[$val]); $i++) {
            $this->array_check($array_main[$val][$i], $array_main, $k);
        }
        // $k++;
    }

我已经尝试修复这个错误很长一段时间了,但没有运气。我真的很感激任何可能的帮助。 提前致谢

【问题讨论】:

  • 请张贴来自 $array_ins 的样本值

标签: php arrays recursion


【解决方案1】:

将变量$array_ins作为参数传递给函数

function array_check($val, $array_main, $k,$array_ins) {


}

并调用函数

$this->array_check($id, $menus['parents'], $k,$array_ins);

function array_check($val, $array_main, $k) {

global $array_ins;

}

不建议在 php 中使用global 在这里查看Are global variables in PHP considered bad practice? If so, why?

【讨论】:

  • $array_ins 应该通过引用传递,我想。
【解决方案2】:

global $array_ins; 语句移到函数中。

【讨论】:

    【解决方案3】:

    global 关键字应该在函数内部使用,以便变量引用外部作用域中的值。

    <?php
    $a = 1;
    $b = 2;
    
    function Sum()
    {
        global $a, $b;
    
        $b = $a + $b;
    } 
    
    Sum();
    echo $b; // 3
    

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 2018-07-14
      • 2020-07-26
      • 2018-04-19
      • 2021-10-28
      • 1970-01-01
      • 2018-04-02
      • 2014-04-03
      相关资源
      最近更新 更多