-3

I stored array of JSON in mysql as a string

[{"id": 1, "mark": 5}, {"id": 2, "mark": 3}, {"id": 3, "mark": 2}]

When I try to use it

@foreach ($places as $place)
   @foreach ($place->rates as $rate)

      {{var_dump($rate->marks)}}

   @endforeach
@endforeach

There is a problem. $rate->marks is a string. How shoul I decode it to array?

UPD

of course I tried to use json_decode, but it returns error

htmlentities() expects parameter 1 to be string, array given

SOLVED

I', stupid. Problem was not in json_decode. I tried to print result with {{ }} which needs string as argument.

sqlnoob
  • 119
  • 1
  • 9

3 Answers3

0

There are no rate in your json, and also no marks.

Check Online

$json = '[{"id": 1, "mark": 5}, {"id": 2, "mark": 3}, {"id": 3, "mark": 2}]';
$places = json_decode ($json);

foreach ($places as $place)
      var_dump($place->mark);

Design the code for the Laravel, Online Debug does't have that feature.

Let me know.

Murad Hasan
  • 9,565
  • 2
  • 21
  • 42
0

You need to json_decode your marks and then iterate them as array. Something like this (I don't know if it works in Laravel but you can get an idea):

@foreach ($places as $place)
   @foreach ($place->rates as $rate)
      @foreach (json_decode($rate->marks) as $mark)
        {{var_dump($mark->mark)}}
      @endforeach
   @endforeach
@endforeach
luchaninov
  • 6,792
  • 6
  • 60
  • 75
0
<?php
$str = '[{"id": 1, "mark": 5}, {"id": 2, "mark": 3}, {"id": 3, "mark": 2}]';

$places = json_decode($str);

foreach ($places as $place) {
    echo 'id=>' . $place->id;
    echo 'mark=>' . $place->mark;
    echo "<br>";
}
luchaninov
  • 6,792
  • 6
  • 60
  • 75
Kruti Aparnathi
  • 175
  • 1
  • 11