在PHP中将cookie中的值存储到数组中?

时间:2013-05-02 05:18:28

标签: php arrays cookies

我浏览了一百万个不同的网站,我似乎无法找到答案 - 有没有办法从cookie中获取信息并将其放入数组中?我已经尝试将$_COOKIE['name']直接存储到数组中,这会导致服务器错误。我已经尝试将$_COOKIE['name']存储为$variable,但是当我打印出数组时,它实际上只返回{​​{1}}。有成功完成此事的人有任何智慧的话吗?

代码(除了实际的数组代码,整个页面工作正常):

$variable

错误只是说“服务器错误”,这是我在任何时候遇到任何语法错误都会遇到的错误。

2 个答案:

答案 0 :(得分:2)

变量不会在单引号字符串中展开。只需直接使用$_COOKIE['name']作为数组键。

$productarray = array($_COOKIE['gatq']=>'The Great Gatsby <img src="gatsby.jpg">',
                  $_COOKIE['catcherq']=>'Catcher in the Rye <img src="catcher.jpg">',
                  $_COOKIE['wavesq']=>'The Waves <img src="waves.jpg">',
                  $_COOKIE['strangerq']=>'The Stranger <img src="stranger.jpg">',
                  $_COOKIE['ulyssesq']=>'Ulysses <img src="ulysses.jpg">',
                  $_COOKIE['prideq']=>'Pride and Prejudice <img src="pride.jpg">',
                  $_COOKIE['mockingbirdq']=>'To Kill a Mockingbird <img src="mockingbird.jpg">',
                  $_COOKIE['roadq']=>'On the Road <img src="road.jpg">'
                  );
但是,我不确定你在这里真正想做什么。为什么cookie的值是关联数组的键?例如$_COOKIE['gatq']中的内容是什么?

我认为你真正想要的是一个二维数组:

$productarray = array(
                  array('quantity'=>$_COOKIE['gatq'], 'title'=>'The Great Gatsby <img src="gatsby.jpg">'),
                  array('quantity'=>$_COOKIE['catcherq'], 'title'=>'Catcher in the Rye <img src="catcher.jpg">'),
                  array('quantity'=>$_COOKIE['wavesq'], 'title'=>'The Waves <img src="waves.jpg">'),
                  array('quantity'=>$_COOKIE['strangerq'], 'title'=>'The Stranger <img src="stranger.jpg">'),
                  array('quantity'=>$_COOKIE['ulyssesq'], 'title'=>'Ulysses <img src="ulysses.jpg">'),
                  array('quantity'=>$_COOKIE['prideq'], 'title'=>'Pride and Prejudice <img src="pride.jpg">'),
                  array('quantity'=>$_COOKIE['mockingbirdq'], 'title'=>'To Kill a Mockingbird <img src="mockingbird.jpg">'),
                  array('quantity'=>$_COOKIE['roadq'], 'title'=>'On the Road <img src="road.jpg">')
                  );

要按数量顺序显示此内容,您可以将usort()$element['quantity']比较的功能一起使用。

答案 1 :(得分:0)

$_COOKIE已经是一个数组。

print_r($_COOKIE);

你会像任何其他数组一样处理它。

if(!empty($_COOKIE['catcherq'])){
  $catcherq = $_COOKIE['catcherq'];
  echo $catcherq; 
}

foreach($_COOKIE as $key=>$value){
  echo ("$key:$value\n");
  ${$key}=$value;
}