具有不同值的PHP多个复选框数组 - 获取选中复选框的总价格

时间:2016-04-06 15:12:04

标签: php arrays

如何计算PHP多个复选框的总和值数组 - 选中复选框的总价格?

例如,结果应显示为:

  

所选编程语言的总价格:C ++,Java = 1200 $

<form method="post" action="#">
   0<input type="checkbox" name="count[]" id="count[]" value="0"/>
   <input type="hidden" name="language[]" id="language" value="C"/>C [$800]     
   <input type="hidden" name="price[]" id="price" value="800"> <br/>

    1<input type="checkbox" name="count[]" id="count[]" value="1"/>
    <input type="hidden" name="language[]" id="language" value="C++"/>C++ [$700]
    <input type="hidden" name="price[]" id="price" value="700"> <br/>

    2<input type="checkbox" name="count[]" id="count[]" value="2"/>
    <input type="hidden" name="language[]" id="language" value="Assembler"/>Assembler [$600]
    <input type="hidden" name="price[]" id="price" value="600"><br/>

    3<input type="checkbox" name="count[]" id="count[]" value="3"/>
    <input type="hidden" name="language[]" id="language" value="Java"/>Java [$500]
    <input type="hidden" name="price[]" id="price" value="500"> <br/>

    4<input type="checkbox" name="count[]" id="count[]" value="4"/>
    <input type="hidden" name="language[]" id="language" value="PHP"/>PHP [$400]
    <input type="hidden" name="price[]" id="price" value="400"> <br/>

  <input type="submit" name="sbt" id="sbt" value="SUBMIT"> 
  </form>

这是PHP代码:

<?php
if(isset($_POST['sbt'])){

  $count = $_POST['count'];
  $sub_menu = $_POST['sub_menu'];
  $sub_price = $_POST['sub_price'];
  $sub_price1 = $_POST['sub_price'];
  //$total_price = array($sub_menu => $sub_price);

   foreach($count as $j)

    echo $sub_menu[$j] . '['.$sub_price[$j]. ']' ;
}
?>

2 个答案:

答案 0 :(得分:0)

您需要确保每个组的数组索引相同:

0<input type="checkbox" name="count[0]" value="0"/>
<input type="hidden" name="language[0]" value="C"/>C [$800]     
<input type="hidden" name="price[0]" value="800"> <br/>

1<input type="checkbox" name="count[1]" value="1"/>
<input type="hidden" name="language[1]" value="C++"/>C++ [$700]
<input type="hidden" name="price[1]" value="700"> <br/>

然后,您可以为每个price获取languagecount

$price    = array_intersect_key($_POST['price'], $_POST['count']);
$language = array_intersect_key($_POST['language'], $_POST['count']);

然后破坏文本并总结价格:

echo "Total Price of Selected Programming Languages: "
    . implode(',', $language) . ' = $'
    . array_sum(price);

答案 1 :(得分:0)

$items = array();
$total = 0;

foreach($_POST['price'] as $k => $price) {
    if(in_array($k, $_POST['count'])) {
        $items[] = $_POST['language'][$k];
        $total += intval($price);
    }
}

$items = implode(", ", $items);
echo $items . " = $" . $total;