Éditer: Ne manquez pas la solution de Stefan ci-dessus, qui utilise la fonction très pratique http_build_query()
: https://stackoverflow.com/a/1764199/179125
knittl a raison en matière d'échappement. Cependant, il y a une manière plus simple de le faire:
$url = 'http://example.com/index.php?';
$url .= 'aValues[]=' . implode('&aValues[]=', array_map('urlencode', $aValues));
Si vous voulez le faire avec un tableau associatif, essayez ceci à la place:
PHP 5.3+ (fonction lambda)
$url = 'http://example.com/index.php?';
$url .= implode('&', array_map(function($key, $val) {
return 'aValues[' . urlencode($key) . ']=' . urlencode($val);
},
array_keys($aValues), $aValues)
);
PHP <5.3 (fonction de rappel)
function urlify($key, $val) {
return 'aValues[' . urlencode($key) . ']=' . urlencode($val);
}
$url = 'http://example.com/index.php?';
$url .= implode('&', array_map('urlify', array_keys($aValues), $aValues));
2 votes
Pourquoi ne pouvez-vous pas simplement transmettre
$_POST
?0 votes
Cela semble vraiment désordonné. Mais pour cette approche, cela doit être ainsi. Une autre approche, un peu plus compliquée, consiste à attribuer
query = array('aParam'=> json_encode($arrayOfValues))
. Et vous pouvez le passer dans une URL plus jolie avecurl_encode(implode('/',$query))
. L'URL ressemblera àwww.example.com/aParam/[va1,val2,...]
. Lors de la réception, vous devez décoder la valeur aParam en JSON dans un tableau.