使用数组并将元素添加到其他数组时,php switch case语句的正确语法

米歇尔

您能否帮助我找到在数组上放置switch语句的正确语法,然后在每种情况下,将元素添加到新数组中。

我有2个步骤的表单(实际上是使用相同php文件的2个表单)。在第一个表格上,用户输入食物名称,选择是否要使用克或杯作为份量,然后选择每日或每周计算。

提交第一个表格后,将从数据库中检索与他们的食物相匹配的内容,并在表格#2中显示,并在食物名称旁边带有一个复选框。他们可以取消选择他们不想要的任何比赛。这一切都很好。

提交第二种表格后,通过从数据库中提取每种食物中的维生素C量(克或杯)来计算维生素C的量。php代码根据他们选择的份量来计算维生素C的量(克的选择很多,杯子的选择很多)。这是我不知道的switch语句。

表格2为:

<!--START DISPLAY OF FORM 2-->
                            <div class="step2">
                          <div class="row">
                                 <h2>Step 2 of 2</h2>
                                </div>
                              <div class="row"> <h3>We Found these matching foods. </h3> <ol><li><h4>Uncheck the ones you don't want to include in your calculation.</h4></li><li><h4>Enter your serving size.  If daily, enter amount of each food you feed your guinea pig each day.  If weekly, enter total amounts that you give him each week.</h4></li><li><h4>Click "Calculate my Vitamin C".</h4></li></ol></div>

                               <form id="step2" class="form-horizontal" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">


                                   <?php  if ($servingsize == "grams") { 
                                      foreach ($results as $CurRes) {
                                    echo '<div class="row">' . '<div class="col-sm-1">' . '<input type="checkbox" name="foodname[]" ' . 'value="'.$CurRes['name'].'"' . 'checked>'. '</div>' . '<div class="col-sm-2">' .$CurRes['name'] .'</div>' . '<div class="col-sm-9">'; ?>
                                       <fieldset>
                                <!-- Select Basic -->
                                         <div class="control-group">
                                           <label class="control-label" for="amountg">Amount</label>
                                           <div class="controls">
                                             <select id="amountg" name="amountg[]" class="input-medium">
                                              <option value="10">10g</option>
                                              <option value="20">20g</option>
                                              <option value="30">30g</option>
                                              <option value="40">40g</option>
                                              <option value="50">50g</option>
                                              <option value="60">60g</option>
                                              <option value="70">70g</option>
                                              <option value="80">80g</option>
                                              <option value="90">90g</option>
                                              <option value="100">100g</option>
                                              <option value="110">110g</option>
                                              <option value="120">120g</option>
                                              <option value="130">130g</option>
                                              <option value="140">140g</option>
                                              <option value="150">150g</option>
                                              <option value="160">160g</option>
                                              <option value="170">170g</option>
                                              <option value="180">180g</option>
                                              <option value="190">190g</option>
                                              <option value="200">200g</option>
                                             </select>
                                               </fieldset>
                                              </div><!--end of div class controls-->
                                             </div><!--end of div class control-group-->
                                           </div><!--end of div class-col-sm-9-->
                                         </div><!--end of div class=row-->
                                 <?php } //end of foreach 
                            } else /*end of if servingsize="grams"*/ { 
                               foreach ($results as $CurRes) { 
                                     echo '<div class="row">' . '<div class="col-sm-1">' . '<input type="checkbox" name="foodnames[]" ' . 'value="'.$CurRes['name'].'"' . 'checked>'. '</div>' . '<div class="col-sm-2">' .$CurRes['name'] .'</div>' . '<div class="col-sm-9">'; ?>
                               <fieldset> 
                                <!-- Select Basic -->
                                  <div class="control-group" style="display:inline">
                                    <label class="control-label" for="cups">Amount</label>
                                    <div class="controls" style="display:inline">
                                     <select id="cups" name="cups" class="input-medium">
                                       <option value="1/4">1/4 cup</option>
                                       <option value="1/2">1/2 cup</option>
                                       <option value="3/4">3/4 cup</option>
                                       <option value="1">1 cup</option>
                                       <option value="1 1/4">1 1/4 cups</option>
                                       <option value="1 1/2">1 1/2 cups</option>
                                       <option value="1 3/4">1 3/4 cups</option>
                                       <option value="2">2 cups</option>
                                       <option value="2 1/4">2 1/4 cups</option>
                                       <option value="2 1/2">2 1/2 cups</option>
                                       <option value="2 3/4">2 3/4 cups</option>
                                       <option value="3">3 cups</option>
                                     </select>
                                     </div><!--end of div class controls-->
                                    </div><!--end of div class control-group-->
                                   </div><!--end of div class col-sm-5-->
                                 </div><!--end of div class row-->
                               </fieldset>
                             <?php } /*end of foreach*/
             } /* end of else - (is cups)*/ ?>
                         <p><input type="submit" value="Calculate my Vitamin C" name="form2"></p> 
                      </form>
           </div><!--end of <div class="step2">-->


 <!--END STEP 2-->   

switch语句为:

/*GOAL HERE IS: take the amount they selected on the form and convert the mysql results based on serving size.  For example, if they selected 50 grams, that's .5 * $curRes['mgc100g']*/
if (isset($_POST['form2'])) {
if ($servingsize == "grams") {
foreach ($_POST['foodname'] as $value) {
    $vitc=array();
    switch ($value) {
      case "10":
         $vitc[] = $curRes['mgc100g']/10;
         break;
      case "20":
         $vitc[] = $curRes['mgc100g']/5;
         break;
      case "30":
          $vitc[] = $curRes['mgc100g']/3.3333;
         break;
      case "40":
            $vitc[] = $curRes['mgc100g']/2.5;
         break;
      case "50":
            $vitc[] = $curRes['mgc100g']/2;
         break;
      case "60":
            $vitc[] = $curRes['mgc100g']/1.667;
        break;
      case "70":
            $vitc[] = $curRes['mgc100g']/1.4286;
        break;
      case "80":
             $vitc[] = $curRes['mgc100g']/1.25;
        break;
      case "90":
             $vitc[] = $curRes['mgc100g']/1.1111;
        break;
      case "100":
             $vitc[] = $curRes['mgc100g'];
        break;
      case "110":
            $vitc[] = $curRes['mgc100g']*1.1;
        break;
      case "120":
            $vitc[] = $curRes['mgc100g']*1.2;
        break;
      case "130":
           $vitc[] = $curRes['mgc100g']*1.3;
        break;
      case "140":
           $vitc[] = $curRes['mgc100g']*1.4;
        break;
      case "150":
           $vitc[] = $curRes['mgc100g']*1.5;
        break;
      case "160":
           $vitc[] = $curRes['mgc100g']*1.6;
        break;
      case "170":
           $vitc[] = $curRes['mgc100g']*1.7;
        break;
      case "180":
           $vitc[] = $curRes['mgc100g']*1.8;
        break;
      case "190":
            $vitc[] = $curRes['mgc100g']*1.9;
        break;
     case "200":
            $vitc[] = $curRes['mgc100g']*2;
        break;
     default:
        echo "We couldn't calculate that. Sorry!";
     }//end of switch statement
     return $vitc;
    } //end of foreach loop
   } else { //end of if $servingsize == grams
foreach ($_POST['foodnames'] as $values) {
  $vitcc = array();
    switch ($value) {
        case "1/4":
          $vitcc[] = $curRes['mgc1cup']/4;
        break;
        case "1/2":
           $vitcc[] = $curRes['mgc1cup']/2;
        break;
        case "3/4":
          $vitcc[] = $curRes['mgc1cup']/1.3333;
        break;
        case "1":
           $vitcc[] = $curRes['mgc1cup'];
        break;
        case "1 1/4":
          $vitcc[] = $curRes['mgc1cup']*1.25;
        break;
        case "1 1/2":
          $vitcc[] = $curRes['mgc1cup']*1.5;
        break;
        case "1 3/4":
          $vitcc[] = $curRes['mgc1cup']*1.75;
        break;
        case "2":
          $vitcc[] = $curRes['mgc1cup']*2;
        break;
        case "2 1/4":
          $vitcc[] = $curRes['mgc1cup']*2.25;
        break;
        case "2 1/2":
          $vitcc[] = $curRes['mgc1cup']*2.5;
        break;
        case "2 3/4":
           $vitcc[] = $curRes['mgc1cup']*2.75;
        break;
        case "3":
           $vitcc[] = $curRes['mgc1cup']*3;
        break;
     default:
        echo "We couldn't calculate that. Sorry!";
     }//end of switch statement
     return $vitcc;
    } //end of foreach loop
  } //end of else statement (i.e., $servingsize is cups)
 } //end of if isset($_POST('form2'))
/*ADD TOTAL OF VITAMIN C mg*/
if ($_POST['radios'] == "grams") {
   foreach ($vitc as $amount) {
    $totalvitcgrams = round(array_sum($vitc), 1);
     return $totalvitcgrams;
        } //end of foreach
} elseif ($_POST['radios'] == "cups") {  //end of if $_POST['amountg'] == grams
   foreach ($vitcc as $amounts) {
    $totalvitccups = round(array_sum($vitcc), 1);
     return $totalvitccups;
        } //end of foreach
} /* end of elseif ($_POST['amountg'] != grams*/ else {
    echo 'An error occurred.  Sorry!'; }
//Calculate daily amount of Vitamin c from weekly totals
if ($weekly == "true") {
  $weektodaygrams = $totalvitcgrams/7;
  $weektodaycups = $totalvitccups/7;
}//end of if $weekly == true
?>

我收到“错误:在第320行为foreach()提供了无效的参数”,它是“返回$ totalvitccups;”。

$ curRes ['mgc1cup']是从数据库中提取的数据。

我已经尝试了两天能想到的一切,但仍然无法正常工作。

因此,我有一个名为foodname []的数组。我需要仔细检查每个提交的食物名称,如果有,请根据选择的份量对它进行计算,然后将结果粘贴到一个数组中,我将其命名为vitc(克)和vitcc(杯) 。

我对所有内容都做了一个var_dump,并将其放在代码中的几个位置,但没有显示任何内容。我得到的唯一错误是参数无效,这对我没有多大帮助。

那么,如何在switch语句的每种情况下进行每次计算并将其添加到数组中呢?因为有了数组后,我会将数组中的所有值加在一起以获得总数。问题在于获取数组。

整个代码很长,但是如果您想看的话,就在这里字段形式可以从1-20个字段中获取食物名称(使用JavaScript动态填充)。

如果您需要在启用javascript的情况下查看它,请在此处(输入“ hello”)。

我的编码不是很好。我读了3本关于php的书,并完成了2篇有关php的在线课程,但是当我坐下来编写代码时,我遇到了一些主要问题,无法完成我想做的事情。但是我一直在努力,在努力。但是这次我真的很困。

ElefantPhace

首先,

$vitc = array();
&
$vitcc = array();

两者都需要在您的foreach之外(上面),否则它们将在每次迭代时重新创建,并且只包含最后一个值。

其次,关于您遇到的错误,

return $totalvitcgrams;
&
return $totalvitccups;

这两个都还需要在foreach循环之外(如下)

并记住您使用的变量名,正如@ Sumurai8在评论中所说,您使用了错误的变量名$valuesvs$value

另外,您需要删除

return $vitc;
&
return $vitcc;

从切换结束。

您还可以非常简单地通过执行以下操作来简化此操作:

$vitc = array();
foreach($_POST['foodnames'] as $value){
    $vitc[] = $curRes['mcg100g'] / (100 / $value);
}

不需要像这样的switch语句。

或者在您的<option>标签中仅提供正确的值。该值不必与选项的文本匹配。这也将减轻对此类繁琐切换的需求,并使您只需要简单的foreach循环即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正确使用switch语句

来自分类Dev

PHP Switch case&if语句未返回正确值

来自分类Dev

在switch语句中使用if let语法

来自分类Dev

switch / case语句评估不正确

来自分类Dev

使用枚举处理 switch case 语句

来自分类Dev

如何正确使用C switch语句

来自分类Dev

使用switch语句时扩展枚举中使用的元组的语法

来自分类Dev

将倍数添加到 php switch case

来自分类Dev

switch case 语句中的语法错误 react-redux

来自分类Dev

使用 Switch Case React Native 时出现语法错误

来自分类Dev

PHP switch语句(endswitch)为其他语法提供了Parse错误

来自分类Dev

使用if语句或switch / case时,WordPress内容消失

来自分类Dev

如何使用vim在php中正确缩进嵌套的switch语句

来自分类Dev

对JComboBox使用switch语句

来自分类Dev

对范围使用switch语句

来自分类Dev

对JComboBox使用switch语句

来自分类Dev

通过Javascript中的switch()语句使用数组

来自分类Dev

使用if语句代替switch case的默认值

来自分类Dev

如何使用Python中的函数编写switch case语句?

来自分类Dev

使用switch case语句初学者javascript编写函数

来自分类Dev

如何在Dart中使用Switch Case语句

来自分类Dev

如何使用 switch case 语句并自动更新 API?

来自分类Dev

在`switch`语句中正确使用C ++ 20`[likely]]`/`[[unlikely]]`

来自分类Dev

jQuery:价格不会更新-无法正确减去(使用switch语句)

来自分类Dev

jQuery:价格不会更新-无法正确减去(使用switch语句)

来自分类Dev

C中switch语句的语法?

来自分类Dev

使用if语句验证switch语句

来自分类Dev

将 switch case 中的值永久添加到 switch case 之外的变量

来自分类Dev

Swift“ switch case”的缩写语法

Related 相关文章

热门标签

归档