Apa cara terbaik agar saya dapat mengirimkan array sebagai parameter url? Saya berpikir apakah ini mungkin:
$aValues = array();
$url = 'http://www.example.com?aParam='.$aValues;
atau bagaimana dengan ini:
$url = 'http://www.example.com?aParam[]='.$aValues;
Saya sudah membaca contoh, tapi menurut saya berantakan:
$url = 'http://www.example.com?aParam[]=value1&aParam[]=value2&aParam[]=value3';
$_POST
?query = array('aParam'=> json_encode($arrayOfValues))
. Dan Anda dapat mengirimkan url yang lebih bagus denganurl_encode(implode('/',$query))
. Url akan terlihat sepertiwww.example.com/aParam/[va1,val2,...]
. Saat menerima Anda harus json_decode nilai aParam ke dalam array.Jawaban:
Ada solusi yang sangat sederhana:
http_build_query()
. Ini mengambil parameter kueri Anda sebagai array asosiatif:akan kembali
http_build_query()
menangani semua pelolosan yang diperlukan untuk Anda (%5B
=>[
dan%5D
=>]
), jadi string ini sama denganaParam[0]=1&aParam[1]=4&aParam[a]=b&aParam[c]=d
.sumber
http_build_query
kembaliparam[]
dan kadang-kadangparam[index]
. Lihat posting ini: stackoverflow.com/questions/11996573/…Sunting: Jangan lewatkan solusi Stefan di atas, yang menggunakan fungsi yang sangat berguna
http_build_query()
: https://stackoverflow.com/a/1764199/179125knittl benar tentang melarikan diri. Namun, ada cara yang lebih sederhana untuk melakukan ini:
Jika Anda ingin melakukan ini dengan array asosiatif, coba ini sebagai gantinya:
PHP 5.3+ (fungsi lambda)
PHP <5.3 (panggilan balik)
sumber
Cara termudah adalah dengan menggunakan
serialize
fungsi tersebut.Ini membuat serial variabel apa pun untuk penyimpanan atau transfer. Anda dapat membacanya di manual php - serialize
Variabel dapat dikembalikan dengan menggunakan
unserialize
Jadi saat meneruskan ke URL yang Anda gunakan:
$url = urlencode(serialize($array))
dan untuk mengembalikan variabel yang Anda gunakan
$var = unserialize(urldecode($_GET['array']))
Berhati-hatilah di sini. Ukuran maksimum permintaan GET dibatasi hingga 4k, yang dapat dengan mudah Anda lewati dengan meneruskan array di URL.
Selain itu, ini bukanlah cara teraman untuk menyampaikan data! Anda mungkin harus melihat menggunakan sesi sebagai gantinya.
sumber
tolong tinggalkan variabel Anda saat mengeluarkan (
urlencode
).dan Anda tidak bisa hanya mencetak larik, Anda harus membangun url Anda menggunakan loop dalam beberapa cara
sumber
print $str . "\n";
memberia: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";}
danprint $strenc . "\n";
memberiJadi jika Anda ingin meneruskan ini
$array
melalui URL kepage_no_2.php
,ex:-
Untuk kembali ke larik asli, itu perlu
urldecode()
, laluunserialize()
, seperti ini di page_no_2.php:memberi
lagi: D
sumber
Saya melakukan ini dengan data base64 berseri yang dikodekan. Cara terbaik dan terkecil, kurasa. urlencode terlalu banyak membuang-buang ruang dan Anda hanya memiliki 4k.
sumber
Ini bukan jawaban langsung karena ini telah dijawab, tetapi semua orang berbicara tentang pengiriman data, tetapi tidak ada yang benar-benar mengatakan apa yang Anda lakukan ketika sampai di sana, dan saya butuh waktu setengah jam untuk menyelesaikannya. Jadi saya pikir saya akan membantu di sini.
Saya akan mengulang sedikit ini
Jelas Anda akan memformatnya lebih baik daripada www.someurl.com?x=$query ini
Dan untuk mendapatkan datanya kembali
sumber
sumber
di halaman yang diterima, Anda dapat menggunakan:
parse_str ($ str, $ array); var_dump ($ larik);
sumber
Ini adalah cara lain untuk memecahkan masalah ini.
sumber