我正在为mmo公会建造一个计算器。此刻,我正在寻找一种方法,使数据更容易访问计算。
基本上,我有一个包含5个文本字段的表单(仅用于测试,还会有更多)和一个选择列表(用于选择正确的等式)。
示例代码:
<input type="text" id="strength" name="strength" value="0">
<input type="text" id="dexterity" name="dexterity" value="0">
<select name="equation" id="equation">
<option name="damage" id="damage">Damage</option>
<option name="defense" id="defense">Defense</option>
</select>
因此,此表格将通过php文件进行处理。
<form action="file.php" method="post">
//inputs here
<input type="submit" value="calculate">
</form>
此时我正在使用vars收到php文件中的所有数据:
$strength = (int)$_POST['strength'];
$dexterity = (int)$_POST['dexterity'];
开始没问题,但是当我的脚本完成后会有超过20个字段...所以我想将所有数据存储在一个数组中,如下所示:
$strength = array(
'fuerza' => 125,
'dexterity ' => 125,
//and more fields...
);
并将这些数据用于各种不同的函数中:
function equation1()
{
$damage = $stats['dexterity'] + $stats['strength'];
}
我已经阅读了几篇关于使用输入中的名称值的帖子和教程来创建一个像这样的数组:name =“name []”。但是对我来说不是我想要的。这个计算器每个“stat”只会收到1个值,我需要在数组中包含所有这些值,这样我就可以从我脚本中的不同函数中访问它们。
如果我的问题不清楚,请问我,如果我的英语不好,请告诉我。
解决后编辑
解决后我在这里放了我的代码:
.html示例:
<input type="text" id="strength" name="stats[strength]" value="0">
<input type="text" id="dexterity" name="stats[dexterity]" value="0">
<select name="operation" id="operation">
<option name="damage" id="damage">Damage</option>
<option name="defense" id="defense">Defense</option>
</select>
.php示例:
function critOp($stat)
{
$result = $stat * 0.00725;
return $result;
}
switch($_POST['operation']){
case 'damage' :
$critical = critOp($_POST["stats"]["dexterity"]);
break;
//more case...
答案 0 :(得分:4)
您可以在名称字段中使用括号来指示PHP将它们粘贴到数组中。如果您使用[]
,它将形成一个数值数组,但您可以在括号中指定一个关联键,如[dexterity]
<input type="text" id="dexterity" name="strength[dexterity]" value="125">
<input type="text" id="fuerza" name="strength[fuerza]" value="125">
这将导致
$_POST['strength'] = array(
'dexterity' => 125,
'fuerza ' => 125,
);
加分
您可以使用array_map:
继续强制执行整数值$_POST['strength'] = array_map('intval', $_POST['strength']);
这将确保所有值都是整数。