php - 无法使用指定的键从数据库访问解码的 json 数据

标签 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'];

而且效果很好。如何使用键从查询数据中访问值?

最佳答案

这里 'field_data"=> '{"primary":"apple"}' 包装 field_data 你已经放置了一个 ' 和一个。我认为它们都需要是 '"

喜欢 'field_data' => '{"primary":"apple"}'

好的,如果我的理解正确的话,你在数据库中保存了一个字符串,它看起来像一个数组,并且你正在尝试通过$访问它query['field_data'] 你不能这样做。

字符串看起来像数组字符串不同。

如果您正在使用当前的实现,则可以采用这种方法。

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

即使如此,您也需要清理$json,因为它仍然是一个字符串

但我建议使用 serialize 保存您的数据然后通过unserialize访问。然后您就可以完全控制您的数据。

关于php - 无法使用指定的键从数据库访问解码的 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41753623/

相关文章:

PHP:用于在地址中获取方向的正则表达式

php - 查询从多个表中获取值

php - 来自MySQL数据库的PHP显示图像

MySQL,将数据插入多列

php - CKEditor 获取选定的编辑器

php - Mysql Date_Format的多种使用

java - MySQL 不会在搜索查询中同时返回波斯语和英语数字

c# - 如何使用 Newtonsoft.Json 反序列化 JSON 数组

python - 删除 python 字典中的一个级别,保留值

php - 在多个浏览器上同步用户输入