Как назвать двухмерный флажок?

На этой странице есть список недели, пользователь может проверить другой день для другой недели

<input type="checkbox" name="week[]" value="Sun"/>
Sun
<input type="checkbox" name="week[]" value="Mon"/>
Mon
<input type="checkbox" name="week[]" value="Tue"/>
Tue
<input type="checkbox" name="week[]" value="Wed"/>
Wed
<input type="checkbox" name="week[]" value="Thu"/>
Thu
<input type="checkbox" name="week[]" value="Fri"/>
Fri
<input type="checkbox" name="week[]" value="Sat"/>
Sat
<br/>
<br/><input type="checkbox" name="week[]" value="Sun"/>
Sun
<input type="checkbox" name="week[]" value="Mon"/>
Mon
<input type="checkbox" name="week[]" value="Tue"/>
Tue
<input type="checkbox" name="week[]" value="Wed"/>
Wed
<input type="checkbox" name="week[]" value="Thu"/>
Thu
<input type="checkbox" name="week[]" value="Fri"/>
Fri
<input type="checkbox" name="week[]" value="Sat"/>
Sat
<br/>
<br/>
.
.
.
<!-- can dynamically add more by javascript -->

Но после отправки весь день будет объединен в одномерный массив

Поэтому я меняю неделю [] на неделю [] []

Но он по-прежнему объединяет все значения в одномерном массиве, и каждый элемент этого массива является массивом

Как отправить двухмерный флажок?

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

            foreach ($week as $oneWeek)
{
echo 'week<br>';
foreach ($oneWeek as $day)
{
echo $day.'<br>';
}
}

3

Решение

Я предлагаю вам сгруппировать их так:

if(isset($_POST['submit'])) {
$weeks = $_POST['week'];
// in this way, you could identify the week for each day you checked
}?>

<form method="POST">
<label><input type="checkbox" name="week[1][]" value="Sun"/>Sun</label>
<label><input type="checkbox" name="week[1][]" value="Mon"/>Mon</label>
<label><input type="checkbox" name="week[1][]" value="Tue"/>Tue</label>
<label><input type="checkbox" name="week[1][]" value="Wed"/>Wed</label>
<label><input type="checkbox" name="week[1][]" value="Thu"/>Thu</label>
<label><input type="checkbox" name="week[1][]" value="Fri"/>Fri</label>
<label><input type="checkbox" name="week[1][]" value="Sat"/>Sat</label>

<br/><br/>

<label><input type="checkbox" name="week[2][]" value="Sun"/>Sun</label>
<label><input type="checkbox" name="week[2][]" value="Mon"/>Mon</label>
<label><input type="checkbox" name="week[2][]" value="Tue"/>Tue</label>
<label><input type="checkbox" name="week[2][]" value="Wed"/>Wed</label>
<label><input type="checkbox" name="week[2][]" value="Thu"/>Thu</label>
<label><input type="checkbox" name="week[2][]" value="Fri"/>Fri</label>
<label><input type="checkbox" name="week[2][]" value="Sat"/>Sat</label>

<br/>

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

Или это:

$days = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
?>

<form method="POST">
<?php for($i = 1; $i <= 3; $i++): ?> <!-- print week 1 to week 3 -->
<?php foreach($days as $day): ?>
<label><input type="checkbox" name="week[<?php echo $i; ?>][]" value="<?php echo $day; ?>"/><?php echo $day; ?></label>
<?php endforeach; ?>
<br/><br/>
<?php endfor; ?>

<br/>

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

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

Вам нужно будет добавить число в первый индекс.

Первая неделя:

<input type="checkbox" name="week[1]" value="Sun"/>

Вторая неделя

<input type="checkbox" name="week[2]" value="Sun"/>
0