728*_*902 17 php arrays cookies
我想从一些"虚拟"索引卡中存储一些数据.每张卡都有正面和背面,用户可以存储多张卡.每一方都会有数据.
I ----------------- I I CARD 1 FRONT I I------------------I
I --------------- I I CARD 1 BACK I I-----------------I
I ----------------- I I CARD 2 FRONT I I------------------I
I --------------- I I CARD 2 BACK I I-----------------I
Run Code Online (Sandbox Code Playgroud)
好的,我的图表搞砸了一下.但是你得到了消息.:)
想象一下上面的图表.我想将每张卡的数据(正面和背面)存储在一个cookie中,作为一个数组(可能),然后能够将每个值拉回并在适当的位置插入(在不同的页面上).
同时,请记住,用户可以制作任意数量的卡片.我不能使用POST或GET功能.如果您能想到将这些数据存储在cookie中的更简单方法,那么数组位是有争议的,请告诉我.请注意:不建议存储在数据库中,因为这对项目来说不方便.:)
dav*_*rad 43
使用json_encode/ json_decode来获取/设置cookie中的数组.
测试数组
$cardArray=array(
'CARD 1'=>array('FRONT I', 'BACK I'),
'CARD 2'=>array('FRONT 2', 'BACK 2')
);
Run Code Online (Sandbox Code Playgroud)
转换并写入cookie
$json = json_encode($cardArray);
setcookie('cards', $json);
Run Code Online (Sandbox Code Playgroud)
保存的字符串看起来像这样
{"CARD 1":["FRONT I","BACK I"],"CARD 2":["FRONT 2","BACK 2"]}
Run Code Online (Sandbox Code Playgroud)
把饼干拿回来
$cookie = $_COOKIE['cards'];
$cookie = stripslashes($cookie);
$savedCardArray = json_decode($cookie, true);
Run Code Online (Sandbox Code Playgroud)
显示已恢复的数组
echo '<pre>';
print_r($savedCardArray);
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)
输出
Array
(
[CARD 1] => Array
(
[0] => FRONT I
[1] => BACK I
)
[CARD 2] => Array
(
[0] => FRONT 2
[1] => BACK 2
)
)
Run Code Online (Sandbox Code Playgroud)
编辑
如果你想知道stripslashes,那是因为实际保存的字符串是
{\"CARD 1\":[\"FRONT I\",\"BACK I\"],\"CARD 2\":[\"FRONT 2\",\"BACK 2\"]}
Run Code Online (Sandbox Code Playgroud)
setcookie加上\之前quoutes逃避它们.如果你没有摆脱那些,json_decode将失败.
编辑二
向cookie添加新卡
$savedCardArray['CARD XX']=array('FRONT XX', 'BACK XX');$savedCardArray不是$cardArray.| 归档时间: |
|
| 查看次数: |
41392 次 |
| 最近记录: |