Php 在函数中调用函数在数组中显示

Php 在函数中调用函数在数组中显示,php,arrays,function,recursion,Php,Arrays,Function,Recursion,如何从函数内部调用函数 function tt($data,$s,$t){ $data=$data; echo '[['; print_r($data); echo ']]'; if($t==0){ $data[]=$s; tt($data,'two',1); }else{ $data[]=$s; } return $data; } print_r(tt('','one',0));

如何从函数内部调用函数

function tt($data,$s,$t){
    $data=$data;
    echo '[[';
    print_r($data);
    echo ']]';
    if($t==0){
        $data[]=$s;
        tt($data,'two',1);
    }else{
        $data[]=$s;
    }
    return $data;
}
print_r(tt('','one',0));
我希望在数组中显示“2”,如

$o[]='one';
$o[]='two';
print_r($o);
试试这个

 function tt($data,$s,$t){
        global $data;

        if($t==0){
            $data[]=$s;
            tt($data,'two',1);
        }else{
            $data[]=$s;
        }
        return $data;
    }
   print_r(tt('','one',0));
输出:

Array
(
    [0] => one
    [1] => two
)

试试这个(注意函数签名,数组是通过ref和$data传递的):

这才是真正需要的

  • 将数组作为最后一个参数,并使其成为可选的,因为在初始调用中不需要它
  • 当递归调用
    tt
    时,您需要“捕获”它的返回数据,否则递归调用根本没有持久的价值
  • 无需使用
    else
    ,因为无论发生什么情况,都要将条目附加到数组中,并且不需要写两次

  • 您调用函数很好,但没有将数据传回。此外,您的第一条指令
    $data=$data
    没有任何作用……如何传递它?当我使用它时,它将我的其他函数组合到同一个数组中。很高兴提供帮助,尽管@deceze清理了函数,但您也应该考虑到这一点:-)
    function tt(&$data,$s,$t){
        echo '[[';
        print_r($data);
        echo ']]';
        if($t==0){
            $data[]=$s;
            tt($data,'two',1);
        }else{
            $data[]=$s;
        }
        return $data;
    }
    
    $array = [];
    tt($array,'one',0);
    print_r($array);
    /**
    Array
     (
       [0] => one
       [1] => two
     )
    */
    
    function tt($s, $t, array $data = array()) {
        $data[] = $s;
        if ($t == 0) {
            $data = tt('two', 1, $data);
        }
        return $data;
    }
    
    print_r(tt('one', 0));