Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 编写对复选框选项的值求和的代码的最佳方法是什么_Php_Forms - Fatal编程技术网

Php 编写对复选框选项的值求和的代码的最佳方法是什么

Php 编写对复选框选项的值求和的代码的最佳方法是什么,php,forms,Php,Forms,我想有一个表单,使用户可以选择车辆。用户应该得到他选择的总价格。我写了这个小脚本,它工作正常。我只是好奇有没有更好的办法。例如,在foreach循环中有很多IFs。例如,如果我有100个复选框呢。我是否应该以脚本应该为每一种新型车辆生成新的IF语句的方式来自动执行该操作?听起来很尴尬。有没有一种方法可以直接以复选框的形式列出一些价格?然而,做这样一件事的最佳方式是什么。塔克斯。 if (isset($_POST['submit'])){ $automobils=$_POST['auto'

我想有一个表单,使用户可以选择车辆。用户应该得到他选择的总价格。我写了这个小脚本,它工作正常。我只是好奇有没有更好的办法。例如,在foreach循环中有很多IFs。例如,如果我有100个复选框呢。我是否应该以脚本应该为每一种新型车辆生成新的IF语句的方式来自动执行该操作?听起来很尴尬。有没有一种方法可以直接以复选框的形式列出一些价格?然而,做这样一件事的最佳方式是什么。塔克斯。
if (isset($_POST['submit'])){
    $automobils=$_POST['auto'];
    $set= array();

    echo "You ordered: " ;
    foreach ($automobils as $model){
        if ($model == "chevrolet"){
            $set[]=20000;
        }
        if ($model == "reno"){
            $set[]=15000;
        }
        if ($model == "punto"){
            $set[]=10000;
        }
        echo "<i>$model </i>";
    }
    $sum = array_sum($set);
    echo "</br> Whole price is $sum $";
}
?>

<form action="" method="post">
<input type="checkbox" name="auto[]" value="chevrolet"/> Chevrolet</br>
<input type="checkbox" name="auto[]" value="reno"/> Reno</br>
<input type="checkbox" name="auto[]" value="punto"/> Punto</br>

<input type="submit" name="submit" value="Submit"/> 
</form>
if(isset($\u POST['submit'])){
$automobils=$_POST['auto'];
$set=array();
回声“你命令:”;
foreach($Automobiles作为$model){
如果($model==“雪佛兰”){
$set[]=20000;
}
如果($model==“雷诺”){
$set[]=15000;
}
如果($model==“punto”){
$set[]=10000;
}
回显“$model”;
}
$sum=数组和($set);
echo“
整个价格为$sum$”; } ?> 雪佛兰
雷诺
平托

如果要在复选框中输入数字。您可以使用一些特殊的分隔符将其与值一起放置。 比如说

<input type="checkbox" name="auto[]" value="punto_20000"/> Punto</br>
Punto

稍后,您可以使用“分解字符串”,并可以获取选定字符串的值

不需要添加数据库和一个全新的有趣编程。 您可以使用explode命令来实现这一点(并且还可以收缩foreach)

关于输入值

 value="chevrolet"
换成

 value="chevrolet;20000"
然后在你的foreach循环中

 foreach ($automobils as $model){
      $eachmodel = explode(";",$model);
      $set[] = $eachmodel[1];
 }

理想情况下,您应该将可能的值及其对应的价格存储在数据库中,而不是存储在代码中。但这里有一个快速的解决方案,它使用一个关联数组作为每辆车及其价格之间的映射

$map = [
    'chevrolet' => 20000,
    'reno' => 15000,
    'punto' => 10000
];
if (!empty($_POST['auto']) {
    echo 'You ordered:<br />';
    $total = 0;
    foreach($_POST['auto'] as $model)
        if (array_key_exists($model, $map)) {
            echo ' - '.$model.'<br />';
            $total += $map[$model];
        }
    echo 'Total price: '.$total.'<br />';
}
$map=[
“雪佛兰”=>20000,
“雷诺”=>15000,
“punto”=>10000
];
如果(!empty($\u POST['auto'])){
回显“您订购的:
”; $total=0; foreach($_POST['auto']作为$model) 如果(数组\键\存在($model,$map)){ 回显'-'.$model.'
'; $total+=$map[$model]; } echo“总价:”.$Total.
; }
然后,您只需在添加/更改车辆/价格等时更新地图


注意,关键是在代码端(或数据库中)存储允许的值/价格而不是以您的形式,因为后者可以通过DOM编辑,所以您需要服务器端的东西来验证它。

在这种情况下,使用数据库会很好地为您服务。^^^^^^^^^^^^^^^是您的解决方案,现在您只需要了解另外100件事情,那件事情呢?或者我们应该假设它已经解决了吗?什么意思是阅读上面的e注释除了这意味着价格可以由用户在DOM中编辑。这看起来更像是一个简单的启动项目,我认为我们不需要太担心。:)