在blade.php视图上打印模型内容时,我遇到了下一个错误:
htmlspecialchars() expects parameter 1 to be string, array given
这个模型"content“是表中的一列(json类型),它看起来就像这样:
[{"Item":2}]
这就是我试图在我的视图中使用它的方式:
@foreach ($post->loot->content as $name => $amount)
<div class="item">
<i class="fab fa-cuttlefish"></i>
<div class="text">{{ $name }} <b>x{{ $amount }}</b></div>
</div>
@endforeach
由于某些原因,如果我单独打印$name,它会显示在使用$amount变量时应该打印的数字(2)。
有什么办法可以解决我的问题吗?
发布于 2018-06-24 03:33:10
如果$post->loot->content包含{"Item":2}
它是一个对象数组,所以你的$amount是整个{"Item": 2 },而不是2。
因此,循环可以是这样的:
@foreach ($post->loot->content as $id=>$json)
@php
$obj =json_decode($json, true)
@endphp
@foreach ($obj as $key=>$val)
<div class="item">
<i class="fab fa-cuttlefish"></i>
<div class="text">{{ $key }} <b>x{{ $val }}</b></div>
</div>
@endforeach
@endforeach
不确定您需要什么,但也许您可以交换
<div class="text">{{ $key }} <b>x{{ $val }}</b></div>
使用
<div class="text">{{ $id }} <b>x{{ $val }}</b></div>
如果您需要列表中整个对象的索引,而不是属性的obj键。
https://stackoverflow.com/questions/51004362
复制相似问题