Когда я использую средство администрирования для LimeSurvey для добавления дополнительного поля в мой опрос, поле attributedescriptions в базе данных выглядит следующим образом:LimeSurvey использует строку JSON из базы данных
a:1:
{
s:11:"attribute_1";
a:4:
{
s:11:"description";
s:4:"Unit";
s:9:"mandatory";
s:1:"N";
s:13:"show_register";
s:1:"N";
s:7:"cpdbmap";
s:0:"";
}
}
При вводе другого поля в базе данных выглядят следующим образом:
a:2:
{
s:11:"attribute_1";
a:4:
{
s:11:"description";
s:4:"Unit";
s:9:"mandatory";
s:1:"N";
s:13:"show_register";
s:1:"N";
s:7:"cpdbmap";
s:0:"";
}
s:11:"attribute_2";
a:4:
{
s:11:"description";
s:9:"Something";
s:9:"mandatory";
s:1:"N";
s:13:"show_register";
s:1:"N";
s:7:"cpdbmap";
s:0:"";
}
}
я теперь нужен динамический способ получить слова «Unit» и «Something» в массив, который я могу использовать.
Это мой код, чтобы получить строку json;
$sql = $dbh->prepare($sql);
$sql->execute();
$result = $sql->fetchAll(PDO::FETCH_ASSOC);
print $result[0]["attributedescriptions"];
Я ужасен в PDO. Я пытался;
$result = var_dump(json_decode($result[0]["attributedescriptions"], true);
$result = var_dump(json_decode($result["attributedescriptions"], true);
$result = var_dump(json_decode($result[0], true);
Я получаю сообщение об ошибке;
Warning: json_decode() expects parameter 1 to be string, array given in /var/www/html/surveys/survey-admin/functions/functions.php on line 189 NULL
Это не JSON, это похоже на PHP-'serialize() 'ed data. Используйте 'unserialize()' вместо 'json_decode()' и повторите попытку: P – Wrikken