Php Cookie多值

Php Cookie多值,php,cookies,multiple-value,Php,Cookies,Multiple Value,在php手册的“cookies”一节中,它指出您可以通过在cookie名称中添加“[]”来向单个cookie添加多个值 起初,我的理解是这样做的: <?php setcookie("[user1]", "bill"); setcookie("[user2]", "tom"); print_r($_COOKIE); ?> 结果是:'Array()' 很明显,在看到一个空数组后,我知道有些地方不对劲,但我遵循了手册中的说明。所以我在浏览器中进入开发者模式,查看浏览器和服务器的所有

在php手册的“cookies”一节中,它指出您可以通过在cookie名称中添加“[]”来向单个cookie添加多个值

起初,我的理解是这样做的:

<?php
setcookie("[user1]", "bill");
setcookie("[user2]", "tom");

print_r($_COOKIE);
?>

结果是:'Array()' 很明显,在看到一个空数组后,我知道有些地方不对劲,但我遵循了手册中的说明。所以我在浏览器中进入开发者模式,查看浏览器和服务器的所有标题信息

浏览器和服务器都具有以下功能: [user1]=账单 [user2]=汤姆

但是$\u COOKIE关联数组是空的,即“array()”

因此,我在PHP手册的“外部源变量”一节中研究并发现了在一个cookie中存储多个值的方式

在这里,它给出了一个详细的例子,说明如何正确地做到这一点。与上述操作不同,操作如下:

<?php
setcookie("Cookie[user1]", "bill");
setcookie("Cookie[user2]", "tom");

print_r($_COOKIE);
?>

上述脚本的输出是:'Array([Cookie]=>Array([user1]=>bill[user2]=>tom))'


我的问题是,为什么在第一个示例中,COOKIE注册但不打印出来,而在第二个(正确的)示例中,它们在$\u COOKIE变量中打印出来?

您的操作有点不正确

 setcookie("Cookie[user1]", "bill");
 setcookie("Cookie[user2]", "tom");
这将存储价值的账单;“tom”作为数组,位于一个名为“cookie”的cookie中,该cookie通过$\u cookie supoer global访问。 您需要这样访问它:

print_r($_COOKIE['Cookie']); // Cookie is the name you used above
另一个例子:

setcookie("bob[user1]", "bill"); // cookie name is bob
print_r($_COOKIE['bob']); // Notice the cookie name is the key here
如果要在单个cookie中存储数组,还可以序列化内容。这会将数组转换为存储在cookie中的字符串,然后在需要数据时将其转换回

$myArray = array(1,2,3,4);
setCookie('my_cookie', serialize($myArray)); // Store the array as a string
$myArray = unserialize($_COOKIE['my_cookie]); // get our array back from the cookie

正确的例子是我已经根据你的评论编辑了你的问题,如果你认为这会影响你的问题rollback@NullPointer我想你编错了部分。我无法将您的更改回滚到修复。应该已经修复了第二个代码块。@Brombomb..好的。。。我已经回滚了[user1]不是声明数组的方式,因此它不能正确设置cookie。在第二个示例中,您正在$\u Cookie变量中创建一个名为“Cookie”的数组。因此,这应该输出该数组的内容:$\u COOKIE[“COOKIE”]