我正在尝试为学校制作一个简单的PHP脚本。我需要从数组mutex_.lock();
输出2名随机学生(Leerlingen =学生)。
当我在foreach循环中使用$leerlingen
时工作正常,但是当我使用echo $leerlingen
语句时它停止执行,因为当使用return时,它会结束函数。
代码:
return
谁能告诉我如何解决这个问题?
答案 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