Как передать массив через $ _GET в php?

Как передать одну или несколько переменных массива типов на другую страницу через $ _GET?

Я всегда передавал переменные значения в форме ?a=1&b=2&c=3

Как насчет прохождения a=[1,2,3] ?

Нужно ли писать цикл for и добавлять все значения?

благодаря

Solutions Collecting From Web of "Как передать массив через $ _GET в php?"

Синтаксис [] можно использовать для передачи массивов через _GET:

 ?a[]=1&a[]=2&a[]=3 

PHP понимает этот синтаксис, поэтому $_GET['a'] будет равен array(1, 2, 3) .

Вы также можете указать ключи:

 ?a[42]=1&a[foo]=2&a[bar]=3 

Многомерные массивы тоже работают:

 ?a[42][b][c]=1&a[foo]=2 

http_build_query() делает это автоматически:

 http_build_query(array('a' => array(1, 2, 3))) // "a[]=1&a[]=2&a[]=3" http_build_query(array( 'a' => array( 'foo' => 'bar', 'bar' => array(1, 2, 3), ) )); // "a[foo]=bar&a[bar][]=1&a[bar][]=2&a[bar][]=3" 

Альтернативой было бы передавать кодированные json массивы:

 ?a=[1,2,3] 

И вы можете разобрать a помощью json_decode :

 $a = json_decode($_GET['a']); // array(1, 2, 3) 

И снова закодируйте его с помощью json_encode:

 json_encode(array(1, 2, 3)); // "[1,2,3]" 

Dont никогда не использовать serialize() для этой цели . Сериализация позволяет сериализовать объекты, и есть способы заставить их выполнить код. Поэтому вы никогда не должны десериализовать ненадежные строки.

Вы можете передать ассоциативный массив http_build_query() и добавить полученную строку в строку запроса к URL-адресу. Массив будет автоматически анализироваться PHP, поэтому $_GET на принимающей странице будет содержать массив.

пример

 $query_str = http_build_query(array( 'a' => array(1, 2, 3) )); 
 $city_names = array( 'delhi', 'mumbai', 'kolkata', 'chennai' ); $city_query = http_build_query(array('city' => $city_names)); 

это даст вам:

 city[0]=delhi&city[1]=mumbai&city[2]=kolkata&city[3]=chennai 

если вы хотите также закодировать скобки, используйте следующий код:

 $city_query = urlencode(http_build_query(array('city' => $city_names))); 

Вывод:

 city%255B0%255D%3Ddelhi%26city%255B1%255D%3Dmumbai ..... 

Ссылка: http_build_query , urlencode

Просто повторите переменные $_GET следующим образом: name=john&name=lea

Это дает вам array .

Раньше я верил, что это будет перезаписано!