我有多个列,这些列以索引1-12结束的后缀保存,例如savings_date_mth_1,直到savings_date_mth_12。到目前为止,我想使用for循环在blade上显示这个值,但是当我像下面这样命名它时,它无法读取列的名称。
@for ($i = 1; $i <= $savings->months_diff; $i++)
<div class="p-4 bg-gray-200 shadow-md hover:shadow-xl rounded-lg">
<div class="text-center text-gray-600 mb-2 underline">
{{ $savings->savings_date_mth_.$i }}
{{ CarbonCarbon::parse($savings->savings_date_mth_.$i)->format('M') }} Savings
</div>
<div>
Cost Item: 100
</div>
</div>
@endfor
我也尝试过使用{$i}
,但它仍然没有显示列的值。请在这个问题上给我一些启发,以及什么是最好的做法。
您需要使用savings_date_mth
作为字符串,并将$i
插入或连接到它。
在PHP中,你可以像这样使用String来访问Object的属性:
$string = 'something';
$object = (object)['something' => 'another'];
{{ $object->{$string} }} // 'another'
但是在您的例子中,您也是从一个变量构造字符串:
$i = 1;
$j = 2;
$savings = (object)['savings_date_mth_1' => 100, 'savings_date_mth_2' => 200]);
{{ $savings->{"savings_date_mth_{$i}"} }} // 100
{{ $savings->{"savings_date_mth_{$j}"} }} // 200
所以最后,你的代码看起来像:
@for ($i = 1; $i <= $savings->months_diff; $i++)
<div class="p-4 bg-gray-200 shadow-md hover:shadow-xl rounded-lg">
<div class="text-center text-gray-600 mb-2 underline">
{{ $savings->{"savings_date_mth_{$i}"} }}
{{ CarbonCarbon::parse($savings->{"savings_date_mth_{$i}"})->format('M') }} Savings
</div>
<div>
Cost Item: 100
</div>
</div>
@endfor
或者,通过连接:
{{ $savings->{'savings_date_mth_' . $i} }}
{{ CarbonCarbon::parse($savings->{'savings_date_mth_' . $i})->format('M') }} Savings
根据您的喜好,或者与项目中的其他用法一致,如果有的话。