разместить многомерный массив в выпадающем

У меня есть два варианта выпадающего с таким же именем, как следующие.

<form action="" method="post">
<select name="freeoptions[]">
<option value="[7][4]">Black</option>
<option value="[7][5]">Blue</option>
<option value="[7][3]">Red</option>
</select><select name="freeoptions[]">
<option value="[9][11]">Small</option>
<option value="[9][15]">Large</option>
<option value="[9][13]">XL</option>
</select>

<input type="submit" name="submit" value="submit">
</form>

Теперь, когда я публикую форму, получая данные в массиве, как,

Array
(
[freeoptions] => Array
(
[0] => [7][4]
[1] => [9][11]
)
)

Но я хочу этот массив что-то вроде

Array
(
[freeoptions] => Array
(
[0] => Array
(
[id] => [7]
[value] => [4]
)
[1] => Array
(
[id] => [9]
[value] => [11]
)
)
)

Может кто-нибудь, пожалуйста, помогите мне, как это сделать.
Спасибо,

0

Решение

Все в атрибуте «value» отправляется в виде буквенной строки, независимо от его содержимого, поэтому вы не можете публиковать значение в виде массива из коробки.

Вы всегда можете иметь оба значения в одном и том же атрибуте значения и разделить его на серверную часть.

Пример в HTML:

<option value="7;4"></option>

Затем сделайте что-то вроде этого в своем бэкэнде:

$data = [];

// Loop all freeoptions params
foreach ($_POST['freeoptions'] as $opt) {
// Split the value on or separator: ;
$items = explode(';', $opt);

if (count($items) != 2) {
// We didn't get two values, let's ignore it and jump to the next iteration
continue;
}

// Create our new structure
$data[] = [
'id'    => $items[0], // Before the ;
'value' => $items[1], // After the ;
];
}

$data-array теперь должен содержать структуру данных, которую вы хотите.

Если вы хотите продолжать использовать $_POST-Вместим вместо этого, просто перезаписать исходные данные после foreach:

$_POST['freeoptions'] = $data;
1

Другие решения

Вы хотите отобразить результат из базы данных или отобразить вручную?

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector