功能不返回结果

时间:2011-11-12 08:07:21

标签: php arrays function return

这是PHP中的一个函数,它生成一个介于1和15之间的随机数,并将该数字存储在一个数组中并继续调用自身重复,直到该数组包含五个元素,此时,您可以使其成为print / echo out数组的元素或返回数组。我的问题是,当我试图让它返回数组并将其分配给变量$ result时,我什么也得不到。关于发生了什么的任何想法?

$storenumbers = array();

function storemynumbers($storenumbers){
    $number = rand(1,15);

    if(count($storenumbers) == 5){
        echo "Done<br/>";
        print_r($storenumbers);
        //return $storenumbers;
    }else{
        echo $number."<br/>";
        $storenumbers[] = $number;
        storemynumbers($storenumbers);
    }
}

//$result = storemynumbers($storenumbers);
//print_r($result);

storemynumbers($storenumbers);

4 个答案:

答案 0 :(得分:1)

因为你在最后一次运行中只有returning任何东西,它会被传递回倒数第二次运行,然后被丢弃。

else区块中,尝试在return前面添加storemynumbers($storenumbers)。这应该将返回值一直传递回链中。

那就是说,为什么你不能这样做:

$storenumbers = Array();
for( $i=0; $i<5; $i++) $storenumbers[] = rand(1,15);
print_r($storenumbers);

答案 1 :(得分:0)

因为你需要通过引用传递参数(&amp;参数之前):像这样:

function storemynumbers(&$storenumbers){
}

默认情况下,变量是本地副本,因此它们在函数外部不可见。

答案 2 :(得分:0)

错过了递归的回报。是我的猜测。

$storenumbers = array();

function storemynumbers($storenumbers){
    $number = rand(1,15);

    if(count($storenumbers) == 5){
        echo "Done<br/>";
        print_r($storenumbers);
        return $storenumbers;
    }else{
        echo $number."<br/>";
        $storenumbers[] = $number;
        return storemynumbers($storenumbers);
    }
}

$result = storemynumbers($storenumbers);
print_r($result);

答案 3 :(得分:0)

这是一种在1到15之间创建$ max随机数的简单方法。

function storemynumbers($max, $start, $end) {
    $store = array();

    for( $i=0; $i<$max; $i++) {
        $store[] = rand($start, $end);
    }

    return $store;
 }

$result = storemynumbers(5, 1, 15);
print_r($result);

您还可以将reference用于变量