【问题标题】:Array to string conversion error on cakephp cookiecakephp cookie上的数组到字符串转换错误
【发布时间】:2014-03-01 20:31:37
【问题描述】:

我正在尝试将关联数组设置为 cakephp 中的 cookie 变量。数组是:

$recent_designers = array(
"0"=>
    array(
        "name" => "Hello",
        ),
"1"=>
    array(
        "name" => "Hi",    
        )

);

并将此数组设置为 cookie recent_designers

$this->Cookie->write('recent_designers', $recent_designers);
$cookies = $this->Cookie->read('recent_designers'); 
$this->set("recent_designers", $cookies);

但是我收到了通知 Notice (8): Array to string conversion [CORE\cake\libs\controller\components\cookie.php, line 458]ctp文件上!如果我的数组是这种格式:

$recent_designers = array(
                        "0"=>"Hello","1"=>"Hi","2"=>"Namaste"
                    );

我没有收到任何错误。

【问题讨论】:

  • Cookies 只能存储字符串值。如果要存储其他类型的值(例如数组),则必须在写入时使用serialize,在读取时使用unserialize。你也可以改用json_encode/json_decode

标签: php arrays cakephp cookies


【解决方案1】:

您可以使用 cookie::write 在 cakephp 中存储一个普通数组,但不能使用嵌套数组。

http://book.cakephp.org/2.0/en/core-libraries/components/cookie.html#using-the-component

传递 3 个元素的数组与保存 3 个 cookie 相同

这样做

$recent_designers = array(
    "0"=>"Hello",
    "1"=>"Hi",
    "2"=>"Namaste"
);

$this->Cookie->write('recent_designers', $recent_designers);

相同
$this->Cookie->write('recent_designers.0', 'Hello');
$this->Cookie->write('recent_designers.1', 'Hi');
$this->Cookie->write('recent_designers.2', 'Namaste');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2012-07-15
    • 2017-12-02
    • 2018-02-05
    • 1970-01-01
    • 2013-06-23
    • 2013-08-24
    相关资源
    最近更新 更多