如果我将此标题发送到服务器:
Cookie: spaces=foo+bar%20baz; repeat=foo; repeat=bar
如何解码?
PHP将其解码为
array (
'spaces' => 'foo bar baz',
'repeat' => 'foo',
)
但我认为应该是
array(
'spaces' => 'foo bar baz',
'repeat' => array('foo','bar'),
)
哪个是对的?
答案 0 :(得分:0)
当参数名称出现多次时,PHP具有覆盖任何外部参数(GET / POST / COOKIE)的已知习惯/特性。
例如,对于?spaces=foo+bar%20baz&repeat=foo&repeat=bar
之类的查询字符串,您会遇到同样的问题 - 在$_GET['repeat']
中,只有值bar
会“生存”。 (在您的Cookie示例中应该是相同的,它应该是'repeat' => 'bar'
,而不是'repeat' => 'foo'
。)
为避免这种情况,必须使用参数名称末尾的方括号。尝试
Cookie: spaces=foo+bar%20baz; repeat[]=foo; repeat[]=bar
- 这应该会在$_COOKIE
中为您提供所需的数组结构。