-1

我有一个我正在尝试拆分的 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 是数字,它们被放入一个数组中。我可以进一步拆分吗?

4

2 回答 2

2

首先,我希望您知道要获取其值的 cookie 的名称。让我们在我的其余答案中调用它mycookie

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

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

接下来,只需[2]在当前代码中使用索引 2 即可。

作为一种快捷方式,如果第二个是您唯一需要的:

list(,,$val) = explode(",",$_COOKIE['mycookie']);
于 2012-04-08T22:24:20.000 回答
0

假设您正在循环,因为您有多个逗号分隔的 cookie 键/值组,请改用 aforeach()并且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];
于 2012-04-08T22:24:33.130 回答