如何在PHP的$ _COOKIE中正确使用foreach循环?

时间:2019-05-29 16:50:55

标签: php arrays cookies

如果有2个错误:

  

为foreach()提供了无效的参数...

     

使用不确定的常量c-在...中假定为'c'

我首先尝试查找cookie是否存在。然后,如果数组中存在重复的cookie。

我在这里查看其他示例,但它们似乎显示相同的foreach循环。有什么我想念的吗?

$seo = "perma-link"
$count = 0;
$duplicate = 0;
if (isset($_COOKIE['c'])) {
    foreach($_COOKIE['c'] as $key => $value) {
        if($value === $seo){
            $duplicate = 1;
        }
    }
} else {
    setcookie(c[$count], $seo, time()+3600);
    $duplicate = 1;
}
if($duplicate == 0){
    $count = count($_COOKIE['c']);
    setcookie(c[$count], $seo, time()+3600);
}

2 个答案:

答案 0 :(得分:1)

  

为foreach()提供的参数无效

您的$ _COOKIE ['c']不是数组。

  

使用未定义的常量c

setcookie(c[$count], $seo, time()+3600);

什么是“ c”?解释器会说明此错误。 setcookie()的第一个参数是cookie名称。您应提供正确的字符串。 setcookie()的第二个参数是一个值。如果要使用foreach进行迭代,则应为数组。检查$ seo变量。

答案 1 :(得分:0)

我做了太多的foreach循环,“ c [$ count]”必须有引号才能起作用。固定它。我感谢詹姆斯·邦德的反馈。

    $seo = "perma-link"
    $count = 0;
    $duplicate = 0;
    if (isset($_COOKIE['c'])) {
        foreach($_COOKIE as $k => $v) {
                if($k == "c" && $v == $seo){
                    $duplicate = 1;
                }
         }
    }else{
        setcookie("c[$count]", $seo, time()+3600);
        $duplicate = 1;
    }
    if($duplicate ==0){
        $count = count($_COOKIE['c']);
        setcookie("c[$count]", $seo, time()+3600);
    }