У меня есть данные 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»}’
Хорошо, если я все правильно укажу в вашей базе данных, вы сохранили string
который выглядит как array
и вы пытаетесь получить к нему доступ $query['field_data']
что вы не можете сделать.
Строка выглядит как array
отличается от string
,
Если вы используете текущую реализацию, вы подходите так.
$str = '"field_data" => "{"primary":"apple"}"';
list($fieldName, $json) = explode('=>', $str);
var_dump($str,$fieldName, $json);
даже тогда нужно чистить $json
как это все еще string
Но я предлагаю сохранить ваши данные, используя сериализации а затем доступ по десериализации. Тогда у вас будет полный контроль над вашими данными.
Других решений пока нет …