PHP数组函数返回随机整数

时间:2017-08-20 23:32:02

标签: php arrays function

我是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个随机数。如果我出错了,有人可以帮我解释为什么会这样或者我错了吗?

3 个答案:

答案 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)

以下是需要在程序文件中更正的要点。

  1. 您正在将一个随机值传递给$ball变量。它需要是一个随机数的数组。

  2. for循环中,返回值 - 这意味着第一次迭代时函数退出。所以value = 1是返回并打印出来的。

  3. 您需要返回已排序的数组。

  4. 您可以使用:

    $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>';