Php 为什么URL中会显示字符串长度?

Php 为什么URL中会显示字符串长度?,php,arrays,url,Php,Arrays,Url,我试图通过url传递数组。我尝试过对URL进行编码,序列化URL,序列化和编码URL,不管我做什么,字符串的长度都会出现在URL中 例如,如果我通过以下方式通过URL传递数组: <a href='http://splitsum.com/samples/your_store/checkout_form2.php?arr=<?PHP echo serialize($order); ?>'>Next Page</a> 生成的URL如下所示(打印出字符串计数):

我试图通过url传递数组。我尝试过对URL进行编码,序列化URL,序列化和编码URL,不管我做什么,字符串的长度都会出现在URL中

例如,如果我通过以下方式通过URL传递数组:

<a href='http://splitsum.com/samples/your_store/checkout_form2.php?arr=<?PHP echo serialize($order); ?>'>Next Page</a>

生成的URL如下所示(打印出字符串计数):

…s:15:%22装运方式%22;s:20:%22平坦%20速率%20(最佳%20方式)%22

有人知道为什么会这样吗?我可以var_转储整个数组(并查看页面上的字符串计数),但似乎无法打印数组中的单个值。这可能与URL中的问题和字符串长度的打印有关吗


谢谢

因为您正在使用
serialize()
。您应该改用
urlencode()

serialize旨在获取内部任意数据结构,并将其编码为可移植格式,以便在其他地方的PHP系统中重复使用。它不会生成保证在URL上下文中有效的代码。基本上你是在用锤子敲螺丝。改用螺丝刀


请注意,urlencode将不接受数组。也许
http\u build\u query()
更合适

显示长度是因为您正在使用。这就是它的输出方式。它用于存储一个PHP变量,以便再次将其加载回PHP。它的输出格式包含数组/字符串的长度

这是这项工作的错误工具。你想用这里代替

<a href='http://splitsum.com/samples/your_store/checkout_form2.php?<?PHP echo http_build_query(array('arr' => $order)); ?>'>Next Page</a>


然后
$\u GET['arr']
checkout\u form2中。php
将是您的
$order
数组。

这就是工作原理。这就是它使用的格式。我建议改为使用http\u build\u query(),它解决了这个问题!非常感谢!我想我可能说得太快了……当我尝试var_dump时,我只得到数组中的第一个值。知道为什么会这样吗?我确实在URL中看到了整个数组,所以数据确实通过了。您是否将代码更改为我的代码?注意我是如何从URL中删除
arr=
的。就是这样!!再次感谢!var_dump现在可以打印整个数组,但当我尝试打印数组的元素时,仍然会得到一个空值。@jennymonion:您是如何访问它的?它应该是这样的:
$\u GET['arr']['shipping\u method']
看起来我的评论没有做到这一点——结果是我在一个数组中有一个数组。一旦我明白了这一点,我就可以访问这个值。但是,没有你的帮助我是做不到的。认真地非常感谢!