如何使用php拆分cookie

时间:2012-04-08 22:20:01

标签: php cookies split

我有一个我想分开的cookie。 cookie采用以下格式:

key = val1,val2,val3(其中每个值用逗号分隔)

有没有办法让我把它分成一个循环,以便我可以直接访问val3?

我尝试使用explode()函数但没有成功。

for ($i = 0; $i < count($_COOKIE); $i++)
{
    $ind = key($_COOKIE);
    $data = $_COOKIE[$ind];

    //I try and slit the cookie here
    $cookie_temp = explode(",",$_COOKIE[$ind]);

    //Here is where I wanted to display Val3 from the cookie
    print $cookie_temp[2];

    next($_COOKIE);
} 

我的代码工作正常,但最终我的所有Val3都在一个大型数组中。例如,我的val3是数字,它们被放入一个数组中。我可以进一步拆分吗?

2 个答案:

答案 0 :(得分:2)

首先,我希望你知道你试图获得价值的cookie的名称。我在其余的答案中称之为mycookie

其次,只需废弃整个循环内容,直接访问$_COOKIE['mycookie']

然后,您现在可以调用explode(",",$_COOKIE['mycookie'])来获取单独的值。

接下来,只需使用[2]获取索引2,就像使用当前代码一样。

作为捷径,如果第二个是您需要的唯一一个:

list(,,$val) = explode(",",$_COOKIE['mycookie']);

答案 1 :(得分:0)

假设您正在循环,因为您有多个以逗号分隔的Cookie键/值组,请使用foreach()而不是list(),您可以使用直接分配检索第三个值。

foreach ($_COOKIE as $key=>$value) {
  list($v1, $v2, $v3) = explode("," $value);
  echo $v3;
}

如果您只有一个cookie值可供访问,则无需循环,您可以直接拨打explode(",", $_COOKIE['key'])

PHP 5.4允许数组解除引用,从而可以直接访问explode()调用之外的数组元素,但这在以前的PHP版本中不起作用。

echo explode(",", $_COOKIE['key'])[2];