Я создал аналогичный код JSON, чтобы показать вам, как заставить его работать.
[{"id":1,"color":"blue"},{"id":2,"color":"red"},{"id":3,"color":"red"},{"id":4,"color":"green"},{"id":5,"color":"red"},{"id":6,"color":"blue"}]
$colors = Color::all(); // Model contains 6 random colors
$countAllColors = count($colors);
$colorNames = $colors->countBy('color');
foreach ($colorNames->all() as $key => $value) {
$values = $key . $value . '/' . $countAllColors . "\n";
echo $values; // output will be: blue2/6 red3/6 green1/6
}
вы могли заметить, что я использую метод countby , чтобы посмотреть, сколько у нас повторного цвета item in the array
.
однако, еслиВы хотите сделать это в шаблоне blade
, просто скопируйте приведенный ниже код и вставьте его в свой шаблон лезвия
@php
$colors = '[{"id":1,"color":"blue"},{"id":2,"color":"red"},{"id":3,"color":"red"},{"id":4,"color":"green"},{"id":5,"color":"red"},{"id":6,"color":"blue"}]';
$colors = json_decode($colors, true);
$colors = collect($colors);
$countAllColors = count($colors);
$colorNames = $colors->countBy('color');
@endphp
<div>
@foreach ($colorNames->all() as $key => $value)
<b> {{ $key . $value . '/' . $countAllColors .' ' }} </b> <br>
@endforeach
</div>
output
blue2 / 6 red3 / 6 green1 / 6
для решения проблемы вложенности, вы можете взглянуть на этот метод pulck .
Надеюсь, вы найдете его полезным