从codeigniter中的递归函数创建数组

I want to create an array using recursion in Codeigniter. my function make_tree() in controller is :

function make_tree($customer_id,$arr = array()){

    $ctree = $this->customer_operations->view_customer_tree($customer_id);

    foreach($ctree as $v):
        echo $customer_id = $v['customer_id'];

        array_push($arr, $customer_id);

        $this->make_tree($customer_id);
    endforeach;

    var_dump($arr);

}

But the var_dump($arr) and echo results output like:

1013

array
  empty

array
  0 => string '13' (length=2)

11

array
  empty

array
  0 => string '10' (length=2)
  1 => string '11' (length=2)

How can I make a single array of all the three outputs, ie an array with elements 13,10,11

you need to send the array with the parameters otherwise a new array is created.

function make_tree($customer_id,$arr = array()){

    $ctree = $this->customer_operations->view_customer_tree($customer_id);

    foreach($ctree as $v):
        echo $customer_id = $v['customer_id'];

        array_push($arr, $customer_id);

        $this->make_tree($customer_id, $arr);
    endforeach;

    var_dump($arr);

}

PS: I don't know what you are trying to do exactly, but you probably need to add a stopping condition that is going to return the final array, unless you want to pass it by reference.

UPDATE

Here is one way to do it:

function make_tree($customer_id, &$arr)
{
    $ctree = $this->customer_operations->view_customer_tree($customer_id);

    foreach($ctree as $v):
        $customer_id = $v['customer_id'];

        array_push($arr, $customer_id);

        $this->make_tree($customer_id, $arr);
    endforeach;
}

and this is how you'd use it:

$final_array = array();
make_tree($some_customer_id, $final_array);
// now the $final_array is populated with the tree data

You can use class scope.

class TheController {

private $arr = array();

function make_tree($customer_id){

    $ctree = $this->customer_operations->view_customer_tree($customer_id);

    foreach($ctree as $v) {
        $customer_id = $v['customer_id'];

        array_push($this->arr, $customer_id);

        $this->make_tree($customer_id);
    }

}

}