简体   繁体   中英

Convert string with array of json (PHP)

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.

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.

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
<?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>";
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM