【问题标题】:cant get associative array variables from cookies in codeigniter无法从 codeigniter 中的 cookie 获取关联数组变量
【发布时间】:2013-05-02 07:59:32
【问题描述】:

我似乎在这个问题上卡住了几次,基本上我在codeigniter中使用了cookie,并将不同名称的数组传递给不同的函数,设置cookie的代码是

$data = array (
            'client_block_ID'  => $client_block_ID,
            'client_unit_ID'   => $client_unit_ID,
            'blockUnits'       => $blockUnits
        );

            $cookieName ='tab'.$counter;

            $cookie = array(
                'name'   => $cookieName,
                'value'  => $data,
                'expire' => '86500',
        );

            $this->input->set_cookie($cookie); 

现在我只是不知道如何获取数组中的变量,即获取 client_block_ID 的语法是什么??

【问题讨论】:

  • 检查答案是否有助于您接受它作为答案
  • $cookie['value']['client_block_ID'];正确获取 cookie 就足够了。

标签: php arrays codeigniter cookies


【解决方案1】:

现在您的 cookie 数组将如下所示............

$cookie = array(
            'name'   => $cookieName,
            'value'  => array(
                               'client_block_ID'  => $client_block_ID,
                               'client_unit_ID'   => $client_unit_ID,
                               'blockUnits'       => $blockUnits
                        );
            'expire' => '86500',
           );

因此,要从您的 $cookie 数组中获取您的 client_block_ID,您必须像下面那样遍历该数组。

foreach($cookie as $c)
{
    echo $c['name'];
    foreach($c['value'] as $v)
    {
        echo $v['client_block_ID'];
    }
}

【讨论】:

  • @Venkat ?你不需要循环。回声 $cookie['value']['client_block_ID'];在你的数组结构的情况下就足够了。
  • @blogger 你可以使用这个 if(empty($cookie) { echo "NO cookie" } else { do what you want to } 来检查你的 cookie 是否存在
  • 对不起,回复晚了,但我正在尽一切可能尝试调试我能得到的一切,当传递简单字符串时我得到了 cookie,但传递数组时没有 cookie。可能是设置cookie的语法有问题
【解决方案2】:

使用

$this->input->cookie()

让您获取 cookie。第一个参数将包含您要查找的 cookie 的名称(包括任何前缀)

如果您尝试检索的项目不存在,该函数将返回 FALSE(布尔值)。

试试这个,

 $cookievalue= $this->input->cookie('value');
 if($cookievalue){
   //cookie exists
   foreach($cookievalue as $cookie){
     echo $cookie['client_block_ID'];
   }
}else{
  //cookie doesnot exists
}

【讨论】:

  • 所以我的cookie似乎没有设置,可能是因为我使用的命名约定,但我尝试了一个相似的名称,但仍然没有!!!
  • 抱歉,回复晚了,但我正在尽一切可能尝试调试我能得到的一切,当传递简单字符串时我得到了 cookie,但传递数组时没有 cookie。可能是设置cookie的语法有问题
【解决方案3】:

你没想到数组是值; 我做到了,我看到了:

A PHP Error was encountered
Severity: Warning
Message: setcookie() expects parameter 2 to be string, array given
Filename: core/Input.php
Line Number: 404

【讨论】:

    猜你喜欢
    • 2015-02-28
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 2015-08-03
    • 2018-10-26
    • 2023-03-04
    相关资源
    最近更新 更多