在数组内的函数显示中调用函数

时间:2014-08-18 10:24:32

标签: 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));

我想要'两个'在数组中显示如

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

3 个答案:

答案 0 :(得分:1)

function tt($s, $t, array $data = array()) {
    $data[] = $s;
    if ($t == 0) {
        $data = tt('two', 1, $data);
    }
    return $data;
}

print_r(tt('one', 0));

这就是他们真正需要的。

  1. 将数组作为最后一个参数并使其成为可选项,因为您在初始调用时不需要它。
  2. 递归调用tt时,您需要" catch"它的返回数据,否则递归调用根本不会产生持久的价值。
  3. 无需使用else,因为您无论如何都要将条目附加到数组中,并且不需要再写两次。

答案 1 :(得分:0)

试试这个(注意函数签名,数组由ref & $ data 传递):

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
 )
*/

答案 2 :(得分:-1)

试试这个

 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
)

<强> DEMO