Вытащить данные из базы данных WordPress - неизвестный формат

Мне нужна помощь в извлечении данных из поля с неизвестным форматом структуры данных. Я использую плагин викторины Wordpress, и я хочу получить данные из его бэкэнд-таблицы. Данные, хранящиеся в answer_data:

a:4:{
i:0;O:27:"WpProQuiz_Model_AnswerTypes":7:{s:10:"*_answer";s:17:"Kieran Trippier ";s:8:"*_html";b:0;s:10:"*_points";i:1;s:11:"*_correct";b:0;s:14:"*_sortString";s:0:"";s:18:"*_sortStringHtml";b:0;s:10:"*_mapper";N;}

i:1;O:27:"WpProQuiz_Model_AnswerTypes":7:{s:10:"*_answer";s:11:"Hugo Lloris";s:8:"*_html";b:0;s:10:"*_points";i:1;s:11:"*_correct";b:0;s:14:"*_sortString";s:0:"";s:18:"*_sortStringHtml";b:0;s:10:"*_mapper";N;}

i:2;O:27:"WpProQuiz_Model_AnswerTypes":7:{s:10:"*_answer";s:14:"Moussa Dembele";s:8:"*_html";b:0;s:10:"*_points";i:1;s:11:"*_correct";b:0;s:14:"*_sortString";s:0:"";s:18:"*_sortStringHtml";b:0;s:10:"*_mapper";N;}

i:3;O:27:"WpProQuiz_Model_AnswerTypes":7:{s:10:"*_answer";s:14:"Jan Vertonghen";s:8:"*_html";b:0;s:10:"*_points";i:1;s:11:"*_correct";b:1;s:14:"*_sortString";s:0:"";s:18:"*_sortStringHtml";b:0;s:10:"*_mapper";N;}
}

глядя на структуру таблицы, тип данных answer_data является длинным текстом, но рядом с ним есть utf8_general_ci. Я не знаю, что это значит. Из этих данных я хочу получить ответы на викторины, например, Кирана Триппье, Хьюго Льориса, Муссу Дембеле и Яна Вертонгена. Любая помощь или подсказка будут очень признательны.

РЕДАКТИРОВАТЬ 1:

Array ( 
[0] => WpProQuiz_Model_AnswerTypes Object ( [_answer:protected] => Kieran Trippier [_html:protected] => [_points:protected] => 1 [_correct:protected] => [_sortString:protected] => [_sortStringHtml:protected] => [_mapper:protected] => ) 
[1] => WpProQuiz_Model_AnswerTypes Object ( [_answer:protected] => Hugo Lloris [_html:protected] => [_points:protected] => 1 [_correct:protected] => [_sortString:protected] => [_sortStringHtml:protected] => [_mapper:protected] => ) 
[2] => WpProQuiz_Model_AnswerTypes Object ( [_answer:protected] => Moussa Dembele [_html:protected] => [_points:protected] => 1 [_correct:protected] => [_sortString:protected] => [_sortStringHtml:protected] => [_mapper:protected] => ) 
[3] => WpProQuiz_Model_AnswerTypes Object ( [_answer:protected] => Jan Vertonghen [_html:protected] => [_points:protected] => 1 [_correct:protected] => 1 [_sortString:protected] => [_sortStringHtml:protected] => [_mapper:protected] => ) ) 

как получить значения из этого массива?


person Sujan Shrestha    schedule 10.08.2019    source источник


Ответы (1)


Это некоторая форма сериализации. Кажется, это массив a из 4 элементов, каждый из которых является дальнейшей структурой. Плагин понимает; вам, вероятно, не нужно это понимать.

utf8_general_ci — это «сортировка», используемая для сравнения LONGTEXT строк. Это подразумевает CHARACTER SET utf8, который является 3-байтовым подмножеством UTF-8 (иначе, MySQL utf8mb4). Это позволяет вам включать символы из большинства языков мира.

Можно было бы надеяться, что плагин предоставляет способ анализа этой структуры, а не оставляет вас в догадках. Кроме того, плагин может изменить структуру без предварительного уведомления.

Вот подсказка: см. PHP serialize() и unserialize().

Использование несериализованного результата:

$foo кажется массивом "объектов" class WpProQuiz_Model_AnswerTypes. Одним из «свойств» этого объекта является $_answer. Итак, посмотрите, дает ли это вам список ответов:

foreach($foo as $obj) {
    echo $obj->_answer, "\n";
}

Или, чтобы собрать ответы в массив $answers:

$answers = array();
foreach($foo as $obj) {
    $answers[] = $obj->_answer;
}
person Rick James    schedule 10.08.2019
comment
Спасибо за подсказку. Функция unserialize() помогла преобразовать в массив. Но у меня проблемы с извлечением данных из этого массива. Вы можете помочь? пожалуйста, смотрите часть редактирования. С Уважением - person Sujan Shrestha; 10.08.2019
comment
@SujanShrestha - посмотрите, поможет ли мой фрагмент кода больше. - person Rick James; 10.08.2019
comment
Спасибо. Я принял ваш ответ. Извините за опоздание. Я был далеко с другими вещами. Можете ли вы помочь мне с этим вопросом: stackoverflow.com/questions /57663434/ - person Sujan Shrestha; 26.08.2019