Массив нескольких выбранных входов

У меня есть эта форма:

<form>
    <select name="data[][]" multiple="multiple">
        <option>1</option>
        <option selected="selected">2</option>
    </select>

    <select name="data[][]" multiple="multiple">
        <option selected="selected">3</option>
        <option>4</option>
    </select>

    <select name="data[][]" multiple="multiple">
        <option selected="selected">5</option>
        <option selected="selected">6</option>
    </select>
</form>

Я хотел бы получить это:

$_POST['data'] = array(
    0 => array(2),
    1 => array(3),
    2 => array(5,6)
);

Я вместо этого получаю это:

$_POST['data'] = array(
    0 => array(2),
    1 => array(3),
    2 => array(5),
    3 => array(6)
);

Решением было бы установить индекс: name="data[0][]", но я хочу, чтобы это было сделано автоматически..

Есть идеи?

2 ответа

Решение

Один из способов. Изменить на:

<select name="data[0][]" multiple="multiple"> 
 ...
<select name="data[1][]" multiple="multiple">
 ...
<select name="data[2][]" multiple="multiple">

Также смотрите комментарий @CBroe.

You don't need to insert the keys manually.
I tested your code and it seems to be correct for what you intend to get or you  expect.
I tested it like this;
<html>
<body>
<?php
if (!isset($_GET["submit"])) {
?>
<form method="get" action="yourfilename.php">
<select name="data[][]" multiple="multiple">
    <option>1</option>
    <option selected="selected">2</option>
</select>

<select name="data[][]" multiple="multiple">
    <option selected="selected">3</option>
    <option>4</option>
</select>

<select name="data[][]" multiple="multiple">
    <option selected="selected">5</option>
    <option selected="selected">6</option>
</select>
<input type="submit" value="submit" name="submit"/>
</form>
<?php
}
else {
$data= $_GET["data"];
print_r($data);
echo $show;
}

\\ So to get the 5 or 6 value in the array with key "2";
\\ Output: 5
$show= $data[2][0];

\\ Or
\\ Output: 6
$show= $data[2][1];

?>
</body>
</html>
Другие вопросы по тегам