Quelle est la meilleure façon de transmettre un tableau en tant que paramètre d'URL? Je pensais si cela est possible:
$aValues = array();
$url = 'http://www.example.com?aParam='.$aValues;
ou que diriez-vous de ceci:
$url = 'http://www.example.com?aParam[]='.$aValues;
J'ai lu des exemples, mais je trouve cela compliqué:
$url = 'http://www.example.com?aParam[]=value1&aParam[]=value2&aParam[]=value3';
$_POST
?query = array('aParam'=> json_encode($arrayOfValues))
. Et que vous pouvez passer dans une URL plus agréable avecurl_encode(implode('/',$query))
. L'URL ressemblera àwww.example.com/aParam/[va1,val2,...]
. Lors de la réception, vous devez json_decode une valeur de Param dans un tableau.Réponses:
Il y a une solution très simple:
http_build_query()
. Il prend vos paramètres de requête sous forme de tableau associatif:reviendra
http_build_query()
gère tous les échappements nécessaires pour vous (%5B
=>[
et%5D
=>]
), donc cette chaîne est égale àaParam[0]=1&aParam[1]=4&aParam[a]=b&aParam[c]=d
.la source
http_build_query
retourparam[]
et parfoisparam[index]
. Consultez cet article: stackoverflow.com/questions/11996573/…Edit: Ne manquez pas la solution de Stefan ci-dessus, qui utilise la
http_build_query()
fonction très pratique : https://stackoverflow.com/a/1764199/179125knittl a raison de s'échapper. Cependant, il existe un moyen plus simple de le faire:
Si vous voulez faire cela avec un tableau associatif, essayez plutôt ceci:
PHP 5.3+ (fonction lambda)
PHP <5.3 (rappel)
la source
Le moyen le plus simple serait d'utiliser la
serialize
fonction.Il sérialise toute variable pour le stockage ou le transfert. Vous pouvez lire à ce sujet dans le manuel php - sérialiser
La variable peut être restaurée en utilisant
unserialize
Donc, en passant à l'URL que vous utilisez:
$url = urlencode(serialize($array))
et pour restaurer la variable que vous utilisez
$var = unserialize(urldecode($_GET['array']))
Soyez prudent ici cependant. La taille maximale d'une requête GET est limitée à 4 Ko, que vous pouvez facilement dépasser en passant des tableaux dans une URL.
De plus, ce n'est vraiment pas le moyen le plus sûr de transmettre des données! Vous devriez probablement envisager d'utiliser des sessions à la place.
la source
veuillez échapper vos variables lors de la sortie (
urlencode
).et vous ne pouvez pas simplement imprimer un tableau, vous devez construire votre URL en utilisant une boucle d'une certaine manière
la source
print $str . "\n";
donnea:4:{s:1:"a";s:8:"Thusitha";s:1:"b";s:10:"Sumanadasa";s:1:"c";s:6:"Lakmal";s:1:"d";s:11:"Nanayakkara";}
etprint $strenc . "\n";
donneDonc, si vous souhaitez transmettre cela
$array
via l'URL àpage_no_2.php
,ex:-
Pour revenir au tableau d'origine, il doit être
urldecode()
, alorsunserialize()
, comme ceci dans page_no_2.php:donne
encore: D
la source
Je fais cela avec des données sérialisées base64 encodées. Le meilleur et le plus petit moyen, je suppose. urlencode est trop de gaspillage d'espace et vous n'avez que 4k.
la source
Ce n'est pas une réponse directe car cela a déjà été répondu, mais tout le monde parlait d'envoyer les données, mais personne n'a vraiment dit ce que vous faites une fois arrivé, et il m'a fallu une bonne demi-heure pour le résoudre. Alors j'ai pensé que j'aiderais ici.
Je vais répéter ce peu
Évidemment, vous la formateriez mieux que cette www.someurl.com?x=$query
Et pour récupérer les données
la source
la source
dans la page reçue, vous pouvez utiliser:
parse_str ($ str, $ tableau); var_dump ($ tableau);
la source
C'est une autre façon de résoudre ce problème.
la source