Преобразование ассоциативного ввода данных POST в сериализованный массив - PullRequest
1 голос
/ 26 июля 2011

Я использую многомерный массив в форме и хочу разобрать эти значения в сериализованный массив, который будет храниться в моей базе данных. Вот соответствующий раздел моей HTML-формы:

<select name="week_days[monday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<select name="week_days[tuesday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<select name="week_days[wednesday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>
<select name="week_days[thursday]"><option value=""></option><option value="preferred">Preferred</option><option value="restricted">Restricted</option></select>

Затем я хочу создать массив в моей модели с именем week_days. Пример того, как я хочу, чтобы массив выглядел следующим образом:

array('monday'=>'preferred','tuesday'=>'','wednesday'=>'restricted','thursday'=>'');

Затем я сериализую () этот массив для хранения в моей базе данных. Как мне преобразовать вход многомерного массива в массив для сериализации?

Ответы [ 3 ]

5 голосов
/ 26 июля 2011

Когда вы отправите это в форме, вы получите $_POST['week_days'], который будет равен вашему массиву в вашем вопросе

3 голосов
/ 26 июля 2011

Вот пример кода для демонстрации:

<code><pre><?php

if ($_POST['week_days']) {
    print_r($_POST);
    print_r(serialize($_POST['week_days']));
}

?>
<выберите имя = "недели_дней [понедельник]"> <значение параметра = ""> <значение параметра = "предпочтительный"> предпочтительный <значение параметра = "ограниченный"> ограниченный <выберите имя = "week_days [вторник]"> <значение параметра = ""> <значение параметра = "предпочтительный"> предпочтительный <значение параметра = "ограниченный"> ограниченный <выберите имя = "week_days [четверг]"> <значение параметра = ""> <значение параметра = "предпочтительный"> предпочтительный <значение параметра = "ограниченный"> ограниченный

Какие выходы (в зависимости от того, что выбрано):

Array
(
    [week_days] => Array
        (
            [monday] => preferred
            [tuesday] => restricted
            [wednesday] => restricted
            [thursday] => preferred
        )

)
a:4:{s:6:"monday";s:9:"preferred";s:7:"tuesday";s:10:"restricted";s:9:"wednesday";s:10:"restricted";s:8:"thursday";s:9:"preferred";}
2 голосов
/ 26 июля 2011

Ну ... Очень просто, если я вас правильно понял:

$serialized = serialize ( $_POST['week_days'] );

будет делать то, что вы хотите ...

Тем не менее, пара замечаний:

  • Возможно, вы захотите создать новую таблицу, в которой вы будете хранить дни и иметь логический столбец для предпочтительных или нет
  • Это не многомерный массив, а ассоциативный массив =)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...