Use json_encode
/ json_decode
to get / set arrays in cookies.
Test array
$cardArray=array(
'CARD 1'=>array('FRONT I', 'BACK I'),
'CARD 2'=>array('FRONT 2', 'BACK 2')
);
convert and write the cookie
$json = json_encode($cardArray);
setcookie('cards', $json);
the saved string looks like this
{"CARD 1":["FRONT I","BACK I"],"CARD 2":["FRONT 2","BACK 2"]}
get the cookie back
$cookie = $_COOKIE['cards'];
$cookie = stripslashes($cookie);
$savedCardArray = json_decode($cookie, true);
show the restored array
echo '<pre>';
print_r($savedCardArray);
echo '</pre>';
outputs
Array
(
[CARD 1] => Array
(
[0] => FRONT I
[1] => BACK I
)
[CARD 2] => Array
(
[0] => FRONT 2
[1] => BACK 2
)
)
Edit
If you wonder about stripslashes
, it is because the string saved actually is
{"CARD 1":["FRONT I","BACK I"],"CARD 2":["FRONT 2","BACK 2"]}
setcookie
adds
before quoutes to escape them. If you not get rid of those, json_decode
will fail.
Edit II
To add a new card to the cookie
- load the array as above
$savedCardArray['CARD XX']=array('FRONT XX', 'BACK XX');
- save the array as above, but now of course
$savedCardArray
and not $cardArray
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…