Несколько значений cookie

В руководстве php в разделе «cookie» указано, что вы можете добавить несколько значений в один файл cookie, просто добавив «[]» в имя файла cookie.

Сначала я понял следующее:

<?php setcookie("[user1]", "bill"); setcookie("[user2]", "tom"); print_r($_COOKIE); ?> 

и out put был: «Array ()« Очевидно, увидев пустой массив, я знал, что что-то не так, но я следовал тому, что было изложено в руководстве. Поэтому я пошел в режиме разработчика в браузере, чтобы увидеть всю информацию заголовка браузера и сервера.

Браузер и сервер имели следующее: [user1] = bill [user2] = tom

но ассоциативный массив $ _COOKIE был пуст, т. е. 'Array ()'

Поэтому я изучил и нашел в руководстве PHP то, как несколько значений хранятся в одном файле cookie в разделе «Переменные из внешних источников».

Здесь он дает подробный пример того, как это делается правильно. Вместо вышесказанного это делается следующим образом:

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

Вывод для вышеупомянутого скрипта: «Array ([Cookie] => Array ([user1] => bill [user2] => tom)) '

Мой вопрос: почему в первом примере файлы cookie регистрируются и все же не распечатываются, но во втором (правильном) примере они распечатываются в переменной $ _COOKIE?

Вы делаете это немного неправильно

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

Это сохранит счетчик значений; и «tom» в виде массива, внутри файла cookie под названием «Cookie», к которому обращается через глобальный суперобъект $ _COOKIE. вам необходимо получить доступ к нему следующим образом:

 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