Vous pouvez utiliser le []
syntaxe pour passer des tableaux à travers _GET :
?a[]=1&a[]=2&a[]=3
PHP comprend cette syntaxe, donc $_GET['a']
sera égal à array(1, 2, 3)
.
Vous pouvez également spécifier des clés :
?a[42]=1&a[foo]=2&a[bar]=3
Les réseaux multidimentionnels fonctionnent aussi :
?a[42][b][c]=1&a[foo]=2
http_build_query()
le fait automatiquement :
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"
Une alternative serait de passer des tableaux encodés en json :
?a=[1,2,3]
Et vous pouvez analyser a
avec json_decode
:
$a = json_decode($_GET['a']); // array(1, 2, 3)
Et encodez-le à nouveau avec json_encode :
json_encode(array(1, 2, 3)); // "[1,2,3]"
Ne jamais utiliser serialize()
à cette fin . Serialize permet de sérialiser des objets, et il existe des moyens de leur faire exécuter du code. Vous ne devriez donc jamais désérialiser des chaînes de caractères non fiables.