我有一个我想分开的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是数字,它们被放入一个数组中。我可以进一步拆分吗?
答案 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];