我有一个json数据存储在我的数据库中,如下所示:
'field_data" => '{"primary":"apple"}'
然后我将它解码为数组:
$decoded = json_decode($query['field_data'],1);
echo $decoded['primary'];
我得到的结果是:
Undefined index: primary
如果我尝试调试它,我可以看到该值。 我试图解码数据而不从数据库查询以隔离我的问题
$data = '{"primary":"apple"}';
$decoded = json_decode($data,1);
echo $decoded['primary'];
它工作正常。如何使用密钥从查询数据中访问值?
答案 0 :(得分:0)
此处'field_data" => '{"primary":"apple"}'
包裹field_data
您已放置'
和"
。我认为它们都需要'
或"
。
像
'field_data'
=> '{ “主”: “苹果”}'
好的,如果我在您的数据库中找到了正确的信息,那么您已保存string
,看起来像array
,并且您正试图通过$query['field_data']
来访问它,而您却无法访问它。
字符串看似array
与string
不同。
如果您正在使用当前的实现方法,那么这种方法。
$str = '"field_data" => "{"primary":"apple"}"';
list($fieldName, $json) = explode('=>', $str);
var_dump($str,$fieldName, $json);
即便如此,您还需要清除$json
,因为它仍然是string
但我建议您使用serialize保存数据,然后按unserialize进行访问。然后你就可以完全控制你的数据了。