Wie kann ich ein Array am besten als URL-Parameter übergeben? Ich dachte, ob das möglich ist:
$aValues = array();
$url = 'http://www.example.com?aParam='.$aValues;
oder wie wäre es damit:
$url = 'http://www.example.com?aParam[]='.$aValues;
Ich habe Beispiele gelesen, aber ich finde es chaotisch:
$url = 'http://www.example.com?aParam[]=value1&aParam[]=value2&aParam[]=value3';
$_POST
?query = array('aParam'=> json_encode($arrayOfValues))
. Und das kannst du mit schönerer URL weitergebenurl_encode(implode('/',$query))
. URL wird so aussehenwww.example.com/aParam/[va1,val2,...]
. Beim Empfang müssen Sie den aParam-Wert json_decode in das Array eingeben.Antworten:
Es gibt eine sehr einfache Lösung :
http_build_query()
. Ihre Abfrageparameter werden als assoziatives Array verwendet:wird zurückkehren
http_build_query()
behandelt alle notwendigen Escape-Aktionen für Sie (%5B
=>[
und%5D
=>]
), sodass diese Zeichenfolge gleich istaParam[0]=1&aParam[1]=4&aParam[a]=b&aParam[c]=d
.quelle
http_build_query
Rückkehrparam[]
und manchmal habenparam[index]
. Schauen Sie sich diesen Beitrag an: stackoverflow.com/questions/11996573/…Bearbeiten: Verpassen Sie nicht die obige Lösung von Stefan, die die sehr praktische
http_build_query()
Funktion verwendet: https://stackoverflow.com/a/1764199/179125Knittl hat Recht mit der Flucht. Es gibt jedoch einen einfacheren Weg, dies zu tun:
Wenn Sie dies mit einem assoziativen Array tun möchten, versuchen Sie stattdessen Folgendes:
PHP 5.3+ (Lambda-Funktion)
PHP <5.3 (Rückruf)
quelle
Am einfachsten wäre es, die
serialize
Funktion zu nutzen .Es serialisiert jede Variable zur Speicherung oder Übertragung. Sie können darüber im PHP-Handbuch lesen - serialisieren
Die Variable kann mithilfe von wiederhergestellt werden
unserialize
Bei der Übergabe an die URL verwenden Sie also:
$url = urlencode(serialize($array))
und um die von Ihnen verwendete Variable wiederherzustellen
$var = unserialize(urldecode($_GET['array']))
Sei hier aber vorsichtig. Die maximale Größe einer GET-Anforderung ist auf 4 KB begrenzt, die Sie leicht überschreiten können, indem Sie Arrays in einer URL übergeben.
Außerdem ist es nicht ganz der sicherste Weg, Daten weiterzugeben! Sie sollten wahrscheinlich stattdessen Sitzungen verwenden.
quelle
Bitte entkommen Sie Ihren Variablen bei der Ausgabe von (
urlencode
).und Sie können nicht einfach ein Array drucken, sondern müssen Ihre URL mithilfe einer Schleife erstellen
quelle
print $str . "\n";
gibta: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";}
undprint $strenc . "\n";
gibtWenn Sie dies also
$array
über die URL an weiterleiten möchtenpage_no_2.php
,Ex:-
Um zum ursprünglichen Array zurückzukehren, muss es
urldecode()
dannunserialize()
wie folgt in page_no_2.php sein:gibt
nochmal: D.
quelle
Ich mache das mit serialisierter Datenbank64 codiert. Der beste und kleinste Weg, denke ich. Urlencode ist zu viel Platzverschwendung und Sie haben nur 4k.
quelle
Dies ist keine direkte Antwort, da dies bereits beantwortet wurde, aber alle sprachen über das Senden der Daten, aber niemand sagte wirklich, was Sie tun, wenn sie dort ankommen, und ich brauchte gut eine halbe Stunde, um sie auszuarbeiten. Also dachte ich, ich würde hier helfen.
Ich werde dieses Bit wiederholen
Natürlich würden Sie es besser formatieren als diese www.someurl.com?x=$query
Und um die Daten zurückzubekommen
quelle
quelle
Auf der empfangenen Seite können Sie Folgendes verwenden:
parse_str ($ str, $ array); var_dump ($ array);
quelle