这是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);
答案 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用于变量