如何在laravel 5.4中存储数组cookie?

rid*_*oth 2 php arrays cookies laravel laravel-5.4

我在 laravel 5.4 中有这个功能,但出现错误。

$cart[$product->id] = $quantity;
var_dump($cart);
return redirect('catalogs')->withCookie(cookie()->forever('cart', $cart));
Run Code Online (Sandbox Code Playgroud)

var_dump($cart) 包含这个:

array(1) { [1]=> string(1) "1" }
Run Code Online (Sandbox Code Playgroud)

错误警告:

Method Symfony\Component\HttpFoundation\Cookie::__toString() must not throw an exception, caught ErrorException: Array to string conversion
Run Code Online (Sandbox Code Playgroud)

如果我只传递字符串值(不是数组),它就成功了。如果有什么方法可以在 Laravel 中存储数组 cookie?

谢谢你。

Imr*_*ooq 7

警告:不要使用序列化/反序列化 http://php.net/manual/en/function.unserialize.php#refsect1-function.unserialize-notes

您可以将其存储为 JSON

 $user=['name'=>'Imran','email'=>'xyz*emphasized text@gmail.com'];
 $array_json=json_encode($user);
 return redirect('user')->withCookie(cookie()->forever( 'user',$array_json, 450000));
Run Code Online (Sandbox Code Playgroud)

关于检索

 $user=\Cookie::get('user');
       $user=json_decode($user);
echo $user->name;
echo $user->email;
Run Code Online (Sandbox Code Playgroud)


Sta*_*tan 5

cookie 中只能存储字符串。所以试试这个:

$cart[$product->id] = $quantity;
var_dump($cart);
return redirect('catalogs')->withCookie(cookie()->forever('cart', serialize($cart)));
Run Code Online (Sandbox Code Playgroud)