Как передать массив через $ GET в php?
Как передать одну или несколько переменных типа array на другую страницу через $_GET?
Я всегда передавал значения переменных в виде ?a=1&b=2&c=3
Как насчет прохождения a=[1,2,3]
?
нужно ли писать цикл for и добавлять все значения?
спасибо
4 ответов
можно использовать []
синтаксис для передачи массивов через запросе:
?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]"
никогда не используйте serialize()
С этой целью. Сериализация позволяет сериализовать объекты, и есть способы заставить их выполнять код. Поэтому вы никогда не должны десериализовывать ненадежные строки.
вы можете передать ассоциативный массив в http_build_query()
и добавьте полученную строку в качестве строки запроса к URL-адресу. Массив будет автоматически проанализирован PHP so $_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
.
я раньше верил, что это будет перезаписано!