我是JSON的初学者,我正在尝试从json字符串中获取值。例如,我想阅读第一个“t”:1443502800 并将其分配给变量 $ beginTime 和第二个“t “:1443790800 分配给变量 $ endTime
{
"op":"&",
"c":[
{
"type":"date",
"d":">=",
"t":1443502800
},
{
"type":"date",
"d":"<",
"t":1443790800
}
],
"showc":[true,true]
}
我真的很感激任何帮助:)
修改代码
foreach($rs2 as $record2)
{
if( $record2->availability == '{"op":"&","c":[],"showc":[]}'){
//skip, because the restriction date was not set for this attendance
}
else{
//get the restriction date by making use of json
$json_data = json_decode($record2->availability, true);
echo $json_data['c'];
}
}
答案 0 :(得分:1)
问题是你无法回应数组。您正在尝试回显$json_data['c']
,这是一个数组。要么返回它,要么回应你需要的东西。例如,使用echo $json_data['c'][0]['t']
原始回答
你应该在第二个变量中使用json_decode而不使用true。然后你有对象(以大括号{
开头)和数组(以方括号[
开头)。然后,您可以获得我们的开始和结束时间
<?php
$string = '{
"op":"&",
"c":[
{
"type":"date",
"d":">=",
"t":1443502800
},
{
"type":"date",
"d":"<",
"t":1443790800
}
],
"showc":[true,true]
}';
$json = json_decode($string);
echo "Start time: ".$json->c[0]->t;
echo "End time: ".$json->c[1]->t;
这是一个工作的eval.in - https://eval.in/441599
答案 1 :(得分:1)
你快到了。完整的电话应该是
$beginTime = $json_data['c'][0]['t'];
因为$json_data['c'][0]
是数组:
array (
"type" => "date",
"d" => ">=",
"t" => 1443502800
),
$endtime
可以通过类似的方式获得:
$endTime = $json_data['c'][1]['t'];