在foreach之后,php未设置

时间:2017-05-10 14:51:57

标签: php foreach unset

我有一家商店,滑雪俱乐部的成员可以租用设备。第一步是成员可以重复选择的循环,例如他和他的家人。每一行材料都有自己的总数,底部是总数。一旦完成最后一次租赁并且该成员想要完成其付款,就会出现问题。最后租用设备的线路加倍,因此总计是假的。一个想法如何解决这个问题。我认为这与我的UNSET指令有关。谢谢你的帮助。这是我的foreach循环的代码:

foreach ($price as $key => $value) {
   $number[$key] = str_pad($number[$key], 2);
   $type[$key] = str_pad($type[$key], 21);
   $lenght[$key] = str_pad($lenght[$key], 15);
   $boots[$key] = str_pad($boots[$key], 22);
   $size[$key] = str_pad($size[$key], 15);
   $priceskipers[$key] = ($priceski[$key]) * ($person[$key]);
   $pricebootspers[$key] = ($priceboots[$key]) * ($person[$key]);
   $total[$key] = array_sum(array($priceskipers[$key], $pricebootspers[$key]));
   $supertotal = 0;  
   $id++;
   echo "<pre>Data : " .$date[$key] . " | " . $number[$key] . " / " . $person[$key] . "| " . $type[$key] . " | " . $lenght[$key] . " | " . $boots[$key] . " | " . $size[$key] . "<br> " . $priceskipers[$key] . " + " . $pricebootspers[$key] . "  =  " . $total[$key] . " for this reservation (id" . $id . ").<hr></pre>";    
      unset($value);
      foreach ($total as $key2 => $value2) {
   $supertotal += $total[$key2];  
   $discount = (($supertotal) * 0.2);
   $grandtotal = (($supertotal) - ($discount));
  }
  }
   echo "<pre><b>Total " . $supertotal . " - 20% (discount for online renting) " . $discount . " = " . $grandtotal . ", your net amount.</b></pre>";

1 个答案:

答案 0 :(得分:0)

首先,您应该更好地提供每个真实的输入变量,以便社区可以更轻松地模拟。

即使上面的代码不是正确的方法,但它仍然有效。 unset()电话无需到此处。

接下来,有点重构,将最后一个foreach块移出主循环:#1

foreach ($price as $key => $value) {
    //old logic
}

foreach ($total as $key2 => $value2) {
    $supertotal += $total[$key2];
    $discount = (($supertotal) * 0.2);
    $grandtotal = (($supertotal) - ($discount));
}

接下来,您甚至可以删除#1中foreach循环中的整个计算:

$superTotal = array_sum($total);
$discount = $superTotal * 0.2;
$grandTotal = $superTotal - $discount;

最后,您的评论是关于在所有用户点击付费按钮之后然后事情被破坏,这意味着计算完全取决于click on pay button之后的事件。