2012-04-08 133 views
-1

我有一个cookie,我试图分割。该cookie的格式如下:如何使用php分割一个cookie

键= 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是数字,他们被放入一个数组中。我可以进一步分割吗?

+7

“我有一个饼干,我试图分裂。”我可以有一块吗? – 2012-04-08 22:20:59

回答

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]; 
2

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

其次,只是报废整个循环的事情,只是直接访问$_COOKIE['mycookie']

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

接下来,只需索引2与[2],因为你在你当前的代码。

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

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