无法使用分配的密钥从数据库访问已解码的json数据

时间:2017-01-19 23:32:10

标签: php mysql json laravel

我有一个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'];

它工作正常。如何使用密钥从查询数据中访问值?

1 个答案:

答案 0 :(得分:0)

此处'field_data" => '{"primary":"apple"}'包裹field_data您已放置'"。我认为它们都需要'"

'field_data' => '{ “主”: “苹果”}'

好的,如果我在您的数据库中找到了正确的信息,那么您已保存string,看起来像array,并且您正试图通过$query['field_data']来访问它,而您却无法访问它。

字符串看似arraystring不同。

如果您正在使用当前的实现方法,那么这种方法。

$str = '"field_data" => "{"primary":"apple"}"';
list($fieldName, $json) = explode('=>', $str);
var_dump($str,$fieldName, $json);

即便如此,您还需要清除$json,因为它仍然是string

但我建议您使用serialize保存数据,然后按unserialize进行访问。然后你就可以完全控制你的数据了。