-1

当每个值都在数组中时,如何使用用户在 html 表单中选择的值?

例子:

HTML 表单:

Pick a color!
<input type ="checkbox" name="color[]" value="red">Red<br>
<input type ="checkbox" name="color[]" value="blue">Blue<br>
<input type ="checkbox" name="color[]" value="yellow">Yellow<br>

PHP 代码

$color = array (
 'red' => 10,
 'blue' => 20,
 'yellow' => 30,
);

如何仅获取用户选择的值并将其汇总?所以如果用户选择了红色和黄色,结果是 40,如果用户只选择了蓝色,结果是 20,等等。

4

3 回答 3

3

好吧,既然 SO 无论如何都会脱离代码编写服务:

$sum = array_sum(
     array_intersect_key($color, array_flip($_REQUEST["color"]))
);

在将其键与输入列表进行比较后,该array_intersect_key部分会复制您的$color数组包含的任何内容。color[]

于 2013-11-11T03:45:15.197 回答
2

您是在提交表单时计算这个总和吗?如果是这样,是这样的:

<?php

$colors = array (
    'red' => 10,
    'blue' => 20,
    'yellow' => 30,
);

$total = 0;

if(isset($_POST)) {

    foreach($_POST['color'] as $color) {

        if(array_key_exists($color, $colors))
            $total += $colors[$color];

    }

}

// tick red, total is 10
// tick red and blue, total is 30
// tick red and yellow, total is 40
// etc...

?>
于 2013-11-11T03:40:42.857 回答
2

为什么你不简单地将“实际价值”放在价值属性上?像 :

 Pick a color!
 <input type ="checkbox" name="color[]" value="10">Red<br>
 <input type ="checkbox" name="color[]" value="20">Blue<br>
 <input type ="checkbox" name="color[]" value="30">Yellow<br>

然后循环进行总结!!

于 2013-11-11T03:44:10.160 回答