【问题标题】:Associative array value += in phpphp中的关联数组值+ =
【发布时间】:2021-01-15 23:03:01
【问题描述】:

我有一个发票项目列表。我创建了一个税收分解数组(关联数组)来存储唯一的税收百分比及其税额。

$taxbreakup=array(); 
@foreach($invoiceinfo->invoiceitems as $invoice_items)
    $taxbreakup[$invoice_items->tax_percentage]+=$invoice_items->tax_amount;
@endforeach

分组税率并显示特定税率的总税额

@foreach($taxbreakup as $key => $value)
 
 <tr>

  <td colspan="12"></td>
  <td class="btmlft" colspan="2">GST ({{number_format($key,2)}})%</td>
  <td class="btmlft rghtbrd alignright">{{number_format(($value),2) }}</td>
  </tr>
 
 @endforeach

我得到一个未定义的索引错误。

【问题讨论】:

  • 我遇到了一个未定义的索引错误。 请向我们展示完整的错误消息,并在您的代码 sn-ps 中指出它与哪一行相关
  • 如果您有未定义的索引,这不是+= 问题。 $taxbreakup[$invoice_items-&gt;tax_percentage] => $invoice_items-&gt;tax_percentage 表示的索引在$taxbreakup 中不存在。
  • dd $taxbreakup 在foreach循环之前你会发现这个错误的原因

标签: php arrays laravel associative-array


【解决方案1】:

我认为这个变量 $taxbreakup 是空的,检查 $taxbreakup 空然后做 foreach

【讨论】:

    【解决方案2】:

    为了使用+=,您将结果累加到其中的变量必须初始化,在您的情况下,它还不存在且未初始化。

    即使你想这样做

    $arr['val'] = $arr['val'] + 1;
    

    需要创建接收变量。

    所以我会使用

    $taxbreakup=array(); 
    @foreach($invoiceinfo->invoiceitems as $invoice_items)
        // check accumulator exists before using it
        if ( ! isset($taxbreakup[$invoice_items->tax_percentage]) ) {
            $taxbreakup[$invoice_items->tax_percentage] = 0; 
        }
        $taxbreakup[$invoice_items->tax_percentage] += $invoice_items->tax_amount;
    @endforeach
    if ( ! isset($arr['hello']) ) { $arr['hello'] = 0; }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2012-02-05
      • 2019-05-12
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      相关资源
      最近更新 更多