我是PHP新手,我正在尝试创建一个函数,生成并返回一个包含6个随机数的排序数组,然后打印出来。我到目前为止的代码如下:
function getRow($ball){
$ball = array();
for($i=1;$i<=6;$i++){
return $ball;
}
sort($ball);
}
echo '<pre>';
print_r(getRow(rand(1,59)));
echo '</pre>';
问题在于我不知道它为什么只打印数组中的1个随机数。如果我出错了,有人可以帮我解释为什么会这样或者我错了吗?
答案 0 :(得分:1)
请尝试相反,原始代码存在太多问题
$ball = [];
for($i=1;$i<=6;$i++){
$ball[] = rand(1,59);
}
sort($ball);
echo '<pre>';
print_r($ball);
echo '</pre>';
RESULT
Array
(
[0] => 3
[1] => 16
[2] => 20
[3] => 32
[4] => 39
[5] => 51
)
OR,使用函数
function getRow()
{
$ball = [];
for($i=1;$i<=6;$i++){
$ball[] = rand(1,59);
}
sort($ball);
return $ball;
}
echo '<pre>';
print_r(getRow());
echo '</pre>';
答案 1 :(得分:1)
而不是调用rand()
6次然后排序然后返回,您可以在没有for
循环的情况下实现所需的结果。
function getRow()
{
$range = range(1, 59); // generate an array containing [1,2,3,...,58,59]
shuffle($range); // shuffle the array
$ball = array_slice($range, 0, 6); // extract the first six elements
sort($ball); // the sort the six elements ASC
return $ball; // return the randomized, truncated, sorted array
}
echo '<pre>';
print_r(getRow());
输出:
Array
(
[0] => 4
[1] => 13
[2] => 16
[3] => 26
[4] => 32
[5] => 52
)
答案 2 :(得分:0)
以下是需要在程序文件中更正的要点。
您正在将一个随机值传递给$ball
变量。它需要是一个随机数的数组。
在for
循环中,返回值 - 这意味着第一次迭代时函数退出。所以value = 1是返回并打印出来的。
您需要返回已排序的数组。
您可以使用:
$ball = array();
function getRow($ball){
for($i=0; $i<6; $i++){
$ball[$i] = rand(1,1000);
}
sort($ball);
return $ball;
}
$sorted_array = getRow($ball);
echo '<pre>';
print_r($sorted_array);
echo '</pre>';