43 votes

Comment passer un tableau via $_GET en php ?

Comment puis-je transmettre une ou plusieurs variables de type tableau à une autre page via $_GET ?

J'ai toujours passé des valeurs variables dans le formulaire ?a=1&b=2&c=3

Et si on passait a=[1,2,3] ?

Dois-je écrire une boucle for et ajouter toutes les valeurs ?

Merci

94voto

arnaud576875 Points 35281

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.

7voto

Michael Mior Points 13475

Vous pouvez passer un tableau associatif à http_build_query() et ajoute la chaîne résultante comme chaîne de requête à l'URL. Le tableau sera automatiquement analysé par PHP de la manière suivante $_GET sur la page de réception contiendra un tableau.

Exemple

$query_str = http_build_query(array(
    'a' => array(1, 2, 3)
));

4voto

IRSHAD Points 1302
$city_names = array(
    'delhi',
    'mumbai',
    'kolkata',
    'chennai'
);
$city_query = http_build_query(array('city' => $city_names));

cela vous donnera :

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

si vous voulez aussi coder les parenthèses, utilisez le code ci-dessous :

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

Sortie :

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

Référence : http_build_query , urlencode

-1voto

user2253826 Points 7

Répétez simplement votre $_GET des variables comme celle-ci : name=john&name=lea

Cela vous donne un array .

J'ai toujours cru qu'il serait écrasé !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X