如何在PHP中通过用户输入从多个数组随机生成对象?
我试图创建一个生成器,用户在其中输入要生成的项目数。每次生成一个从1到100的数字。根据结果,从三个数组中随机选择一个项目。它应该根据需要循环,然后显示结果。我有下面的部分代码,因为我试图遵循逻辑如何在PHP中通过用户输入从多个数组随机生成对象?,php,html,Php,Html,我试图创建一个生成器,用户在其中输入要生成的项目数。每次生成一个从1到100的数字。根据结果,从三个数组中随机选择一个项目。它应该根据需要循环,然后显示结果。我有下面的部分代码,因为我试图遵循逻辑 <form action='random.php' method='POST' id='random'> <table class='table table-responsive'> <tr> <td>Number of
<form action='random.php' method='POST' id='random'>
<table class='table table-responsive'>
<tr>
<td>Number of items: </td>
<td><input type='text' name='randitem'></td>
<td><button type="submit"Generate</button>
</td>
</tr>
</table>
<?php
$roll = rand(1, 100);
if $roll < 50
$commonItem = array(citem1, citem2, citem3);
if $roll => 50 and < 95
$uncommonItem = array(uitem1, uitem2, uitem3);
if $roll => 95
$rareItem = array(ritem1, ritem2, ritem3);
?>
项目数量:
这里有一个想法,您可以根据要选择的数组(根据示例代码,也是随机的)从每个数组中随机选择一个项目:
这是一个重构版本,其函数处理if语句中的重复功能:
<?php
$commonItems = array('citem1', 'citem2', 'citem3');
$uncommonItems = array('uitem1', 'uitem2', 'uitem3');
$rareItems = array('ritem1', 'ritem2', 'ritem3');
function getItem($itemArray) {
$size = count($itemArray) - 1;
$index = rand(0,$size);
return $itemArray[$index];
}
$roll = rand(1,100);
if ($roll < 50) {
$item = getItem[$commonItems];
} elseif ($roll >= 50 && $roll < 95) {
$item = getItem[$uncommonItems];
} else {
$item = getItem[$rareItems];
}
echo $item;
?>
编辑:我错过了关于如何输入多个项目的部分,因此这里是
// Check to see if form was submitted with something in randitem
if (isset($_POST['randitem'])) {
$commonItems = array('citem1', 'citem2', 'citem3');
$uncommonItems = array('uitem1', 'uitem2', 'uitem3');
$rareItems = array('ritem1', 'ritem2', 'ritem3');
function getItem($itemArray) {
$size = count($itemArray) - 1;
$index = rand(0,$size);
return $itemArray[$index];
}
// loop number of times set in form
foreach ($i = 0; $i < $_POST['randitem']; $i++) {
$roll = rand(1,100);
if ($roll < 50) {
$item = getItem[$commonItems];
} elseif ($roll >= 50 && $roll < 95) {
$item = getItem[$uncommonItems];
} else {
$item = getItem[$rareItems];
}
echo $item . "<br>"; // will print each item on its own line
}
}
?>
//检查表单是否随randitem中的内容一起提交
如果(isset($_POST['randitem'])){
$commonItems=数组('citem1','citem2','citem3');
$uncommonItems=array('uitem1','uitem2','uitem3');
$rareItems=数组('ritem1','ritem2','ritem3');
函数getItem($itemArray){
$size=计数($itemArray)-1;
$index=rand(0,$size);
返回$itemArray[$index];
}
//表单中设置的循环次数
foreach($i=0;$i<$\u POST['randitem'];$i++){
$roll=兰特(1100);
如果($roll<50){
$item=getItem[$commonItems];
}elseif($roll>=50&$roll<95){
$item=getItem[$unmonitems];
}否则{
$item=getItem[$rareItems];
}
echo$item。“
”;//将在其自己的行上打印每个项目
}
}
?>
注意:如果表单没有数字提交,这将无济于事,所以考虑将输入类型更改为“数字”或对表单进行其他验证,以确保只有一个数字被发送到PHP 。由于多种原因,PHP代码无效。这应该是伪代码,还是您正在尝试编写实际可编译的代码?if语句语法处于禁用状态,并且那些双箭头
=>
运算符在条件语句中不起作用。我假设你指的是大于等于的=
,这是伪代码。例如,目标是用户输入要生成的项目数。假设用户输入3。他们点击生成。生成三个百分比。如果生成1%到50%,则从公共列表中随机选择一项。如果百分比为51到94,则从不常见列表中随机选择一个项目。如果百分比为95到100,则从罕见列表中随机选择一个项目。然后向用户显示这3个项目的结果。
// Check to see if form was submitted with something in randitem
if (isset($_POST['randitem'])) {
$commonItems = array('citem1', 'citem2', 'citem3');
$uncommonItems = array('uitem1', 'uitem2', 'uitem3');
$rareItems = array('ritem1', 'ritem2', 'ritem3');
function getItem($itemArray) {
$size = count($itemArray) - 1;
$index = rand(0,$size);
return $itemArray[$index];
}
// loop number of times set in form
foreach ($i = 0; $i < $_POST['randitem']; $i++) {
$roll = rand(1,100);
if ($roll < 50) {
$item = getItem[$commonItems];
} elseif ($roll >= 50 && $roll < 95) {
$item = getItem[$uncommonItems];
} else {
$item = getItem[$rareItems];
}
echo $item . "<br>"; // will print each item on its own line
}
}
?>