我想做的是获取一个名称列表(来自输入),假设 100,将它们洗牌,然后根据数组的某个百分比 (n) 返回随机选择。
例如,如果数组有 100 个元素(名称),则返回 5%,这是随机数组中的 5 个随机名称。我已经尝试在谷歌上搜索解决方案,但找不到太多,不知所措,无法返回一个随机数组。
(摘录)
if(isset($_POST['submit']) === true) {
$names = $_POST['ShuffleNames'];
$namesArray = explode("n", $names);
shuffle($namesArray);
//display each name on new line
foreach($namesArray as $name) {
echo "<li>". $name . "</li>";
}
}
您可以按如下方式执行此操作:
- 接受用户输入 -- 数组和百分比
- 使用
count()
计算数组元素的数量 - 计算百分比:(计数/百分比)* 100
- 使用
array_slice()
对数组进行切片并返回结果
作为一个函数:
function array_percentage($array, $percentage)
{
shuffle($array);
$count = count($array);
$result = array_slice($array, 0, ceil($count*$percentage/100));
return $result;
}
您可以像这样使用它:
if(isset($_POST['submit'])) {
$names = $_POST['ShuffleNames'];
$namesArray = explode("n", $names);
print_r(array_percentage($namesArray, 5));
}
演示!
几乎在那里,但不是foreach:
$max = 5;
for ($i=0;$i<$max;++$i) {
echo "<li>".array_pop($namesArray). "</li>";
}
您可以将$max设置为所需的百分比
if(isset($_POST['submit']) === true) {
$x = 5; //Set the percentage
$names = $_POST['ShuffleNames'];
$namesArray = explode("n", $names);
$total = count($namesArray); //Get the total amount of elements (the 100%)
shuffle($namesArray);
//display each name on new line
for($i = 1; $i <= ($total/100)*$x; $i++) { //loop and output
echo "<li>". $namesArray[$i] . "</li>";
}
}
使用这个: http://www.php.net/manual/en/function.str-shuffle.php
$names = $_POST['ShuffleNames'];
$namesArray = explode("n", $names);
$names_Array = **str_shuffle**($namesArray);
// .. code ...