在PHP中循环JSON

时间:2016-07-18 04:49:09

标签: php

json_from_db:

 {
   "id": 23,
   "positions": "[{\"col\":2,\"row\":1,\"size_x\":10,\"size_y\":3}]",
   "styles": "\"position: absolute; min-width: 135px; min-height: 160px;\"",
   "created_at": "2016-07-18 02:40:36",
   "updated_at": "2016-07-18 02:40:36"
 }

在PHP中循环:

$positions = json_from_db
foreach($positions->position as $value) { echo $value->col}

提供的参数无效错误

我想得到col,sixe_x和size_y

的值

更新

下面的答案是正确的,但是 想要获得风格的价值

3 个答案:

答案 0 :(得分:1)

试试我的xD源码

$positions = json_decode('{
"id": 6,
"positions": [
    {
        "col": 6,
        "row": 1,
        "size_x": 2,
        "size_y": 2
    }
],
"created_at": "2016-07-17 23:36:47",
"updated_at": "2016-07-17 23:36:47"
}');
echo 'col: '.$positions->positions[0]->col.'<br>';
echo 'row: '.$positions->positions[0]->row.'<br>';
echo 'size_x: '.$positions->positions[0]->size_x.'<br>';
echo 'size_y: '.$positions->positions[0]->size_y.'<br>';

您将获得结果

col: 6
row: 1
size_x: 2
size_y: 2

答案 1 :(得分:1)

您需要使用json_decode()

$arr = '{"id":6,"positions":" [{\"col\":6,\"row\":1,\"size_x\":2,\"size_y\":2}]","created_at":"2016-07-17 23:36:47","updated_at":"2016-07-17 23:36:47"}';
$positionsArr = json_decode($arr,true);
$positions = json_decode($positionsArr["positions"],true);
foreach($positions as $value) 
{ 
    echo "size x:". $value['size_x']. "\n size y: ". $value['size_y'];
}

现场演示:Click Here

答案 2 :(得分:1)

您需要先解码JSON才能使用数据

$json_obj = json_decode($json_from_db);
$positions = $json_obj->positions;

foreach($positions as $position){
    echo $position->col . "<br/>";
}

Live demo.