Как получить значения флажков в группе с PHP?

У меня есть форма, где я добавил группу флажков, как показано ниже:

<form action="next.php" method="get"> <input name="c1" value="1" type="checkbox"> <input name="c1" value="2" type="checkbox"> <input name="c1" value="3" type="checkbox"> <input name="c1" value="4" type="checkbox"> ... </form> 

Если я выберу первый и третий флажки, URL-адрес выглядит хорошо, когда я нажимаю кнопку отправки, например

 ?c1=1&c1=3 [...] 

но массив $ _GET содержит только последнее значение c1. Я знаю, что могу использовать нотацию [] для получения массива, но тогда ссылка выглядит так:

 ?c1[]=1&c1[]=3 [...] 

Я видел сайты, которые генерируют URL-адрес без [] и все еще удается учитывать все значения. Как они это делают ?

Спасибо !

PHP требует, чтобы вы использовали нотацию псевдо-массива, если вы хотите использовать одно и то же имя поля для нескольких разных элементов формы:

 <input type="checkbox" name="c1[]" ... /> <input type="checkbox" name="c1[]" ... /> <input type="checkbox" name="c1[]" ... /> etc... 

[] Указывает PHP обрабатывать c1 как массив и сохранять все представленные значения. Без [] PHP будет просто перезаписывать каждое предыдущее значение c1 новым, пока обработка формы не будет выполнена.

Сайты, которые не используют нотацию [] , обрабатывают сами формы, извлекают строку запроса из $_SERVER['QUERY_STRING'] а затем сами анализируют ее.

Использование должно использовать это:

 <input name="c1[]" value="1" type="checkbox"> <input name="c1[]" value="2" type="checkbox"> <input name="c1[]" value="3" type="checkbox"> <input name="c1[]" value="4" type="checkbox"> 

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

 $qs = explode("&",$_SERVER['QUERY_STRING']); foreach ($qs as $part) { if (strpos($part,"c1") !== false) { $split = strpos($part,"="); $values[] = substr($part, $split + 1); } } var_dump($values); 

Если ваш запрос выглядит следующим образом:? C1 = 1 & c1 = 3, код выше дает вам следующий результат:

 array(2) { [0]=> string(1) "1" [1]=> string(1) "3" }