我试图将一组值存储在 cookie 中,并在每次加载页面时使用新值更新该 cookie,但我无法更新该数组。到目前为止,这是我得到的:
我设置了一个包含四个值的数组,并在每次页面加载时在数组中选择一个随机值。
// Store values in array
$values = array(
0 => 'A',
1 => 'B',
2 => 'C',
3 => 'D'
);
// Get a random value for this page load
shuffle($values);
$random_value = $values[0];
然后我检查 cookie 是否已设置,如果尚未设置(例如,第一次加载页面时),我将 cookie 设置为存储值,使用 JSON 将值存储在数组中。
// Check if cookie has been set
if (!isset($_COOKIE["my_cookie"])) {
// Set cookie to current value
$init_value = array($random_value);
$init_value = json_encode($init_value, true);
setcookie('my_cookie', $init_value, time()+3600);
}
然后我有一个 else 语句,它将在设置 cookie 时触发(例如,每次后续页面加载),它获取 cookie 数组,将当前随机值添加到数组的末尾,并尝试存储更新数组作为 cookie 的新值。
else {
// Get cookie value
$prev_value = $_COOKIE["my_cookie"];
$prev_value = stripslashes($prev_value);
$prev_value = json_decode($prev_value, true);
// Add current value to array and set cookie again
array_push($prev_value, $random_value);
$new_value = json_encode($prev_value, true);
setcookie('my_cookie', $new_value, time()+3600);
}
在最后一段代码中尝试用新值更新 cookie 之前,一切都很好。该值已添加到数组,但该数组未设置为 cookie。
谁能告诉我为什么 cookie 没有更新?我这样做的方式是否正确?
谢谢。
最佳答案
在这里尝试了您的代码,一切正常。尝试清除浏览器上的 cookie,可能只是本地问题
关于php - 每次加载页面时,使用新值更新存储在 cookie 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756036/