PHPにオブジェクト配列を保存する方法

PHPz
リリース: 2023-04-18 09:27:04
オリジナル
590 人が閲覧しました

PHP 言語では、配列は複数の値を格納し、添え字を通じて各値にアクセスできる非常に一般的なデータ型です。さらに、PHP はオブジェクト配列もサポートしています。つまり、配列内の各要素はオブジェクトです。実際の開発では、オブジェクト配列をアプリケーションに保存し、その後の操作を実行する必要があることがよくあります。この記事では、PHP がオブジェクトの配列を保存する方法を紹介します。

1. オブジェクト配列を文字列にシリアル化して保存する

オブジェクト配列は、文字列にシリアル化し、必要に応じてオブジェクト配列に逆シリアル化することで保存できます。 PHP は、シリアル化関数と逆シリアル化関数 serialize() および unserialize() を提供します。

サンプル コードは次のとおりです。

// 定义一个对象
class Person {
  public $name;
  public $age;
}

// 初始化对象数组
$persons = [
  new Person('Tom', 18),
  new Person('Jerry', 20),
];

// 序列化对象数组
$serialized = serialize($persons);

// 存储到文件中
file_put_contents('persons.txt', $serialized);

// 从文件中读取并反序列化
$serialized = file_get_contents('persons.txt');
$persons = unserialize($serialized);
ログイン後にコピー

オブジェクト配列を文字列にシリアル化すると、データの保存と送信が簡単になりますが、いくつかの問題もあります。まず第一に、シリアル化された文字列は直接表示および変更できないため、デバッグと保守がより複雑になります。第 2 に、シリアル化された文字列は単純なオブジェクト配列の格納にのみ適しており、オブジェクト配列にサブオブジェクトやリソースが含まれる場合、シリアル化された文字列は非常に大きくなる可能性があります。

2. オブジェクト配列を JSON 形式に変換して保存する

オブジェクト配列を文字列にシリアル化する場合と比較して、オブジェクト配列を JSON 形式に変換すると、データの表示と変更が容易になります。 JSON 形式は、PHP を含む複数のプログラミング言語をサポートする軽量のデータ交換形式です。 PHP は、オブジェクト配列を JSON 形式の文字列に変換し、JSON 形式の文字列からオブジェクト配列を解析できる json_encode() および json_decode() 関数を提供します。

サンプル コードは次のとおりです。

// 定义一个对象
class Person {
  public $name;
  public $age;
}

// 初始化对象数组
$persons = [
  new Person('Tom', 18),
  new Person('Jerry', 20),
];

// 将对象数组转换为JSON格式字符串
$json = json_encode($persons);

// 存储到文件中
file_put_contents('persons.json', $json);

// 从文件中读取并解析为对象数组
$json = file_get_contents('persons.json');
$persons = json_decode($json);
ログイン後にコピー

オブジェクト配列を JSON 形式に変換すると、データの表示と変更が容易になり、複雑なオブジェクト配列を保存できます。ただし、JSON 形式は文字列形式よりも多くのスペースを占有するため、大規模なオブジェクト配列を保存するときに特定のパフォーマンスの問題が発生する可能性があります。

3. オブジェクト配列をシリアル化されたバイナリ ストリームに変換し、PHP の

#msgpack 拡張機能を使用すると、オブジェクト配列をバイナリ ストリームにシリアル化するメソッドが提供され、このメソッドによりストレージ容量を削減できます。オブジェクト配列を保存するときに使用でき、データ送信と解析の効率も向上します。ここでは、msgpack を使用してストレージ オブジェクト配列を拡張する方法を紹介します。

まず、PHP に

msgpack 拡張機能がインストールされていることを確認する必要があります。次に、msgpack_pack() 関数と msgpack_unpack() 関数を使用して、それぞれオブジェクト配列をバイナリ ストリームにシリアル化し、バイナリ ストリームからオブジェクト配列を解析できます。

サンプル コードは次のとおりです。

// 定义一个对象
class Person {
  public $name;
  public $age;
}

// 初始化对象数组
$persons = [
  new Person('Tom', 18),
  new Person('Jerry', 20),
];

// 将对象数组序列化为二进制流
$packed = msgpack_pack($persons);

// 存储到文件中
file_put_contents('persons.bin', $packed);

// 从文件中读取并解析为对象数组
$packed = file_get_contents('persons.bin');
$persons = msgpack_unpack($packed);
ログイン後にコピー
オブジェクト配列をバイナリ ストリームにシリアル化すると、記憶域を最適化でき、データ送信と解析の効率が向上します。ただし、バイナリ ストリームは表示や変更が不便であるため、デバッグやメンテナンスが困難になる可能性があります。

結論

この記事では、PHP でオブジェクト配列を保存するための 3 つの方法 (文字列へのシリアル化、JSON 形式への変換、バイナリ ストリームへのシリアル化) を紹介します。さまざまなビジネス ニーズやデータの特性に応じて、さまざまなストレージ方法を選択することで、ストレージ スペースの最適化、データ転送効率の向上、さらにはプログラムの開発とメンテナンスも容易になります。

以上がPHPにオブジェクト配列を保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート