serialize

関数の概要

PHPの serialize 関数は、配列やオブジェクトなどの複雑なデータ構造を文字列に変換し、保存や送信をしやすくするための関数です。これにより、データベースやファイルにそのまま保存でき、後で元のデータ構造に戻すこと(逆シリアライズ)も可能になります。特にWordPressのカスタムフィールドやセッションデータの保存などでよく使われます。

パラメータの説明

  • mixed $value : 文字列化したい値を指定します。配列、オブジェクト、整数、文字列、ブール値などPHPのほとんどのデータ型を指定可能です。

戻り値

指定した値をPHP内部のシリアライズフォーマットに変換した文字列を返します。文字列化に失敗した場合は FALSE を返します。

使用例

基本的な使い方

$array = ['apple', 'banana', 'cherry'];
$serialized = serialize($array);
echo $serialized;
// 出力例: a:3:{i:0;s:5:"apple";i:1;s:6:"banana";i:2;s:6:"cherry";}

配列をシリアライズすることで、複雑な構造を文字列化でき、データベースにそのまま保存しやすくなります。

オブジェクトのシリアライズ

class Fruit {
    public $name;
    public function __construct($name) {
        $this->name = $name;
    }
}
$fruit = new Fruit("apple");
$serializedObject = serialize($fruit);
echo $serializedObject;
// 出力例: O:5:"Fruit":1:{s:4:"name";s:5:"apple";}

オブジェクトもシリアライズでき、あとで unserialize により元の状態に戻すことができます。

配列とオブジェクト混在のデータのシリアライズ

$data = [
    'fruits' => ['apple', 'banana'],
    'count' => 2,
    'object' => new stdClass()
];
$serializedData = serialize($data);
echo $serializedData;

様々なデータ型を組み合わせた複雑なデータ構造もまとめて文字列化できるため、一括保存に便利です。

関連する関数

  • unserialize : シリアライズされた文字列を元のPHP値に戻す関数
  • json_encode : JSON形式で文字列化する関数。軽量で他言語との連携に向く
  • json_decode : JSON形式の文字列をPHPの値に戻す関数

まとめ

serialize 関数は、PHPの複雑なデータ構造を簡単に文字列に変換する強力なツールです。データベースやファイル保存、セッション管理に役立ちます。ただし、シリアライズ文字列はPHP独自の形式なので他言語では利用しづらい点に注意が必要です。JSON形式での保存を検討する場合は json_encode との使い分けを考えると良いでしょう。初心者の方も今回の例を参考に、まずは配列やオブジェクトのシリアライズから試してみてください。