Получить содержимое из строки в разных ситуациях
-
21-09-2019 - |
Вопрос
Я подумываю о сохранении данных из формы в виде строки, где каждый ответ будет разделен трубкой.У меня проблема в том, что некоторые ответы могут быть в виде нескольких пунктов.Мы сохраняем выбор переключателя вместе с соответствующими ответами, например.
Question 1 - 1 Answer [A1]
Question 2 - Radio button selected [A2] + 3 form fields
Question 3 - 1 Answer [A3]
Итак, я думал о хранении данных следующим образом:
$str = A1|A2[x,x,x]|A3
Причина, по которой я решил заключить несколько вариантов ответа в скобки, заключается в том, чтобы они имели отношение к вопросу.
Я думаю, что мое решение будет работать, но когда я приду читать значения из базы данных, я буду использовать Php. explode()
чтобы получить значения в массив.
Например. explode("|",$str);
Дам:
array(0=>A1, 1=>A2[x,x,x],2=>A3);
Прежде чем разрабатывать это, подумайте, как лучше всего получить содержимое [x,x,x]
и отделив его от array[1]
?
Любое предложение будет высоко оценено.
Спасибо
Решение
В качестве альтернативы, вместо того, чтобы хранить ваши ответы в виде строки, а затем пытаться превратить их в массив, вы можете начать с них в массиве, а затем, если вам нужно, превратить их в строку, чтобы вы могли:
$array = array('A1',array(x,x,x),'A3');
Затем, если вам это нужно в виде строки, вы можете вызвать:
$str = сериализовать($array);
Таким образом, вы получаете аналогичный метод доступа к вашему решению после того, как вы расчленили строку, только вам не придется пытаться разделить строку A2[1,2,3] дальше, поскольку вы можете просто проверить, является ли она вместо этого массив.
Другие советы
Ваш подход не дает никакой пользы и вносит ненужную сложность.Почему бы вам просто не использовать реляционную базу данных и не хранить каждый фрагмент данных в отдельной строке таблицы?Если у вас нет доступа к MySQL или аналогичной СУБД, вы всегда можете использовать SQLite.
Я думаю, тебе нужно взглянуть на сериализовать и десериализовать.
Вы также можете сохранить информацию в виде ассоциативного массива, закодированного в json, с помощью функции json_encode().Затем, когда вы извлекаете данные из базы данных, вы просто делаете:
$arr = json_decode($value);