serialize関数を利用すると、配列やオブジェクトを文字列化してくれます。文字列化することで、配列データをそのままDBに保存することができます。
(シリアライズの方法として、json_encode
を利用する方法もあります。)
目次
serialize関数
echo serialize(
array(
'bool' => true,
'int' => 100,
'float' => 3.33,
'null' => NULL,
'string' => 'aaaaa',
'array' => array('鈴木', '山田', '佐藤')
)
);
// a:6:{s:4:"bool";b:1;s:3:"int";i:100;s:5:"float";d:3.3300000000000000710542735760100185871124267578125;s:4:"null";N;s:6:"string";s:5:"aaaaa";s:5:"array";a:3:{i:0;s:6:"鈴木";i:1;s:6:"山田";i:2;s:6:"佐藤";}}
出力された文字列を見やすい形に整形してみます。
a:6:
{s:4:"bool";b:1;
s:3:"int";i:100;
s:5:"float";d:3.3300000000000000710542735760100185871124267578125;
s:4:"null";N;
s:6:"string";s:5:"aaaaa";
s:5:"array";a:3:
{i:0;s:6:"鈴木";
i:1;s:6:"山田";
i:2;s:6:"佐藤";
}
}
型:値
の形式に変換されていることがわかります。
unserialize関数
シリアライズされた文字列を、元に戻すにはunserialize関数を利用します。
var_dump(unserialize('a:6:{s:4:"bool";b:1;s:3:"int";i:100;s:5:"float";d:3.3300000000000000710542735760100185871124267578125;s:4:"null";N;s:6:"string";s:5:"aaaaa";s:5:"array";a:3:{i:0;s:6:"鈴木";i:1;s:6:"山田";i:2;s:6:"佐藤";}}'));
/*
* array (size=6)
* 'bool' => boolean true
* 'int' => int 100
* 'float' => float 3.33
* 'null' => null
* 'string' => string 'aaaaa' (length=5)
* 'array' =>
* array (size=3)
* 0 => string '鈴木' (length=6)
* 1 => string '山田' (length=6)
* 2 => string '佐藤' (length=6)
*/