【问题标题】:Using "+=" operator in PHP在 PHP 中使用“+=”运算符
【发布时间】:2014-11-10 21:57:46
【问题描述】:

我有一个通过 JSON 数据运行的 foreach 循环。 JSON 中的值之一是一个数字:

{
  "apiVersion": "0.1",
  "data": {
    "offset": 0,
    "limit": 50,
    "count": 50,
    "total": 783,
    "reports": [
      {
        "type": "ROOM_CHARGE",
        "data": {
          "datetime": "2014-11-10T11:08:08-08:00",
          "originator": "265a",
          "roomNumber": "265",
          "chargeItem": "Premium Services",
          "chargeAmountCents": 495
        }
      },
      {
        "type": "STB_EVENT_TIMED",
        "data": {
          "datetime": "2014-11-10T10:38:20-08:00",
          "originator": "242b",
          "roomNumber": "242",
          "eventItem": "Watched movie 31008",
          "duration": "P0Y0M0DT0H7M50.827S"
        }
      },
      {
        "type": "ROOM_CHARGE",
        "data": {
          "datetime": "2014-11-10T09:35:37-08:00",
          "originator": "540a",
          "roomNumber": "540",
          "chargeItem": "Premium Services",
          "chargeAmountCents": 495
        }
      },

您会注意到上面的"ROOM_CHARGE" 指的是"chargeAmountCents": 495。我想运行我的 foreach 循环并将每个数字加在一起:

注意下面我的代码$total。我基本上想将所有房间费用加在一起,然后在最后回显总数。我可以自己格式化数字,我只是在使用 "+=" 运算符时遇到了问题,并且不确定它是否应该以这种方式使用?当我echo $total 时,我不断收到"495"

<?php foreach($output1['data']['reports'] as $reporting): ?>
      <?php if($reporting['type'] == "ROOM_CHARGE") : ?>
      <tr>
          <td><?php echo 'Room Charge'; ?></td>
          <td><?php echo substr($reporting['data']['datetime'], -26, 10) ?></td>
          <td><?php echo substr($reporting['data']['datetime'], -14, 8) ?></td>
          <td><?php echo ($reporting['data']['roomNumber']) ?>  </td>
          <td><?php echo ($reporting['data']['originator']) ?>  </td>                            
          <td><?php echo ($reporting['data']['chargeItem']) ?></td>
          <td><?php echo number_format(($reporting['data']['chargeAmountCents'])/100, 2, '.', ',') ?></td> 
          <td>-</td>
          <?php $total = ""; ?> 
          <?php $total += ($reporting['data']['chargeAmountCents']) ?>         
      </tr>

【问题讨论】:

  • $total = "";。你有这个 in 你的循环。每次运行时,它会将$total重置''。声明总outside循环,并将其声明为0,因为您正在向其中添加数字。
  • 为什么要在循环中设置 $total =""?
  • 天哪。就是这样。感谢您的帮助。如果您发布答案,我会将其标记为正确@RocketHazmat

标签: php json operators subtotal


【解决方案1】:

在你的循环中,你正在做&lt;?php $total = ""; ?&gt;。因此,每次循环时,您都会重置总数。

您需要在循环之外设置$total(设置为0,因为它是一个数字)

<?php $total = 0; ?> 
<?php foreach($output1['data']['reports'] as $reporting): ?>
      <?php if($reporting['type'] == "ROOM_CHARGE") : ?>
      <tr>
          <td><?php echo 'Room Charge'; ?></td>
          <td><?php echo substr($reporting['data']['datetime'], -26, 10) ?></td>
          <td><?php echo substr($reporting['data']['datetime'], -14, 8) ?></td>
          <td><?php echo ($reporting['data']['roomNumber']) ?>  </td>
          <td><?php echo ($reporting['data']['originator']) ?>  </td>                            
          <td><?php echo ($reporting['data']['chargeItem']) ?></td>
          <td><?php echo number_format(($reporting['data']['chargeAmountCents'])/100, 2, '.', ',') ?></td> 
          <td>-</td>
          <?php $total += ($reporting['data']['chargeAmountCents']) ?>         
      </tr>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2015-04-27
    • 2015-03-13
    • 2014-09-08
    相关资源
    最近更新 更多