1

JSON データを実行している foreach ループがあります。JSON の値の 1 つは数値です。

{
  "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。私は基本的にすべての部屋料金を合計し、最後に合計をエコーアウトしたいと考えています。自分で番号をフォーマットできますが、"+="オペレーターに問題があり、このように使用する必要があるかどうかわかりません。私はいつでも取得し続け"495"ますecho $total

<?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>
4

1 に答える 1

0

あなたのループの中で、あなたはやってい<?php $total = ""; ?>ます。したがって、ループするたびに合計がリセットされます。

ループの外側$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>
于 2014-11-10T22:03:47.980 に答える