Вы можете использовать синтаксис []
для передачи массивов через _GET:
?a[]=1&a[]=2&a[]=3
PHP понимает этот синтаксис, поэтому $_GET['a']
будет равно array(1, 2, 3)
.
Youтакже можно указать ключи:
?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()
для этой цели .Serialize позволяет сериализовать объекты, и есть способы заставить их выполнять код.Поэтому вы никогда не должны десериализовывать ненадежные строки.