Вопрос

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

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);

http://php.net/manual/en/function.json-encode.php

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top