php 超链接里的参数如何传递数组

例如:$names = array("11","22","33");
$url="localhost/m/index.php?names=".$names这样不对呀!!!求正解!!

需要准备的材料分别是:电脑、php编辑器、浏览器。

1、首先,打开php编辑器,新建php文件,例如:index.php。

2、在index.php中,输入代码:var_dump($_GET['name']);。

3、浏览器访问index.php?name[]=1&name[]=2,此时会打印出数组传递结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
答:url传参不支持数组.
方法1: 把数组遍历出来,组成键值对传过去在接收.
方法2:把数组序列化,接收后在反转.
示例:$arr = array('1','2','3');
$str = base64_encode(serialize($arr));//此时数组已经转换为字符串
$a = unserialize(base64_decode($str));
print_r($a);追问

方法一 肯定不行 因为我有几千个数据要穿 组装成超链接的话 会溢出的 因为GET有字符限制

方法2:我试过了 但是总是还原不过来! 怎么能还原出来呀!   传的数据是中文!
我想 你既然能说出方法2 肯定有办法还原中文的 请一定要教教我!

追答

老兄,你都知道了url传参有长度限制,那你几千个数据应该是溢出了吧
建议搞post提交吧.
因为 base64_encode()这个函数可以把汉字转化的 base64_decode() 这个函数在还原.

.思路是 数组->序列化->base64转化->base64反转->反序列化->数组

用URL传值的时候有限制 但是这个限制应该是URL本身的限制 是从"http://"开始到整个URL结束的长度不能超过2048 而超过1024的时候安全性就无法保证了

追问

还是还原不过来 我的写法是这样的 您看下问题在哪里哦:
$str = base64_encode(serialize($arry2));
$URL="../insertcontract.php?Category=";
$URL=$URL.$str;
然后在另外一个页面接收:
$Category = unserialize(base64_decode($_GET["Category"]));
print_r($Category);
打印出来的空,,就是什么都没有接收到哦
控制层的PHP 页面里查询出数据 然后跳转到网页, 用表格显示出数据..请问这样 如何搞POST提交. 谢谢你啦

追答

亲,你先看下你这一行是不是错了 $str = base64_encode(serialize($arry2));
在转化的时候 你的 数组是 $arry2 还是 $array2

另外,查询出数据了,顺利成章的 就在接下来可以遍历 输出显示 .为什么要跳到另一个页面去显示

追问

第二个方法我终于弄好了,,不是代码写错的问题
而是base64_encode函数序列化中文后,再用超链接传递时,编码中的+号会变成“ ”(空格),,,,我接收值之后 把所有 空格 替换成 + 号,就可以顺利还原了!!
还有!传数组是为了 控制层和显示层 分开, mvc思想的!。 难道我把查询数据的代码 直接写在网页里?? 那样不是也很乱嘛!!
你们平常是怎么写的???????????????

追答

恭喜你啊
我们用的模板的 , 就MVC 思想, 页面显示很单间的啊

追问

我也用的mvc思想。。但是 控制层跳转到页面的时候,查询出来的很多条数据是怎么传递到页面的呀。。教教我呗!!谢谢啦

本回答被提问者采纳
第2个回答  2015-10-10
和普通的参数一样传递即可,获取后直接是传之前一样的数组
相似回答