如何从数组中输出2个随机值?

时间:2015-10-09 20:46:37

标签: php arrays function

我正在尝试为学校制作一个简单的PHP脚本。我需要从数组mutex_.lock(); 输出2名随机学生(Leerlingen =学生)。

当我在foreach循环中使用$leerlingen时工作正常,但是当我使用echo $leerlingen语句时它停止执行,因为当使用return时,它会结束函数。

代码:

return

谁能告诉我如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

array_rand和其他依赖libc的函数(rand)标准分布不好。我总是建议使用mt_rand(),如果你需要它平均分配,否则一些条目将受到很大的青睐。

这是数值数组的一个很好的替代品:

function array_mt_rand($array) {
    return $array[ mt_rand( 0, count($array)-1 ) ];
}
$one = array_mt_rand($array);
$two = array_mt_rand($array);

如果你有一个小数组并且总是想要两个不同的值,你可能需要一些额外的检查。

答案 1 :(得分:1)

您只能在函数内返回一个值,在本例中是一个数组。我假设数组至少有两个值。

<?php

$leerlingen = array(
    "tobias", "hasna", "aukje", "fred", "sep", "koen", "wahed", "anna", "jackie", "rashida", "winston", "sammy", "manon", "ben", "karim", "bart", "lisa", "lieke"
);
shuffle($leerlingen);

function maakGroepjes($leerlingen) {
    //your result array
    $result = array();
    //Picking 2 random entries out of an array to $keys
    $keys = array_rand($leerlingen, 2);
    //Returning the array with two values
    return array($leerlingen[$keys[0]], $leerlingen[$keys[1]]);
}

//assign the values to the vars
list($one, $two) = maakGroepjes($leerlingen);

//printing
echo $one . "<br>\n";
echo $two . "<br>\n";

?> 

答案 2 :(得分:0)

你可以尝试这样的事情。

function maakGroepjes($leerlingen) {
    do {
        $first_student = array_rand($leerlingen);
        $second_student = array_rand($leerlingen);
    } while ($leerlingen[$first_student] == $leerlingen[$second_student]);
    return [$leerlingen[$first_studen], $leerlingen[$second_student]];
}

返回此内容。

 Array
(
    [0] => manon
    [1] => winston
)

此外,功能打印/回声信息和返回信息之间的差异非常大。

您不能将变量分配给函数内部的echo语句,而您可以为return语句分配变量。

答案 3 :(得分:0)

我会稍微改变一下。

$groepjes = maakGroepjes($leerlingen);

然后用

$groepjes[0];

您可以一次生成所有群组。不用担心重复。这样,如果您需要多个组,则可以遍历组列表。如果你真的只需要一组两个,那就是

foreach ($groepjes[0] as $student) echo "$student<br>";

你可以随意ouptut。一个非常简单的例子:

self.slider