note 59600 added to function.serialize
| From: | none at none dot none | Date: | Sat, 10 Dec 2005 21:17:48 +0000 |
| Subject: | note 59600 added to function.serialize | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-99918@lists.php.net to get a copy of this message | ||
The only complaint I have about serializing, is that it will not save the variable name. To fix
this, as well as add support for more then one variable/array, I chose to write this class:
class SaveVar
{
function store($list)
{
$sl = explode("|", $list);
for ($i = 0; $i < count($sl); $i++)
{
$varname = $sl[$i];
global $$varname;
$thevar = $$varname;
$serialized = serialize($thevar);
$saved[$i] = base64_encode($varname)."@".base64_encode($serialized);
}
$data = implode("|", $saved);
return($data);
}
function restore($stored)
{
$sv = explode("|", $stored);
for ($i = 0; $i < count($sv); $i++)
{
$svp = $sv[$i];
list($name64, $value64) = explode("@", $svp);
$name = base64_decode($name64);
$value = base64_decode($value64);
global $$name;
$$name = unserialize($value);
}
}
}
----
An example of using this class is as follows...
----
$arr1 = array("Hello", "World");
$arr2 = array("World", "Hello");
$sv = new SaveVar;
$saved = $sv->store("arr1|arr2");
$arr1 = NULL;
$arr2 = NULL;
echo $saved;
echo "<HR>";
$sv->restore($saved);
print_r($arr1);
echo "<BR>";
print_r($arr2);
----
I hope someone finds this useful...
-Jestin S Larson
----
Manual Page -- http://www.php.net/manual/en/function.serialize.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+59600
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+59600&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+59600&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+59600&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+59600&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+59600&report=yes&reason=non-english
Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+59600&report=yes&reason=already+in+docs
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+59600&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+59600&report=yes
Search -- http://master.php.net/manage/user-notes.php