PHP では、オブジェクトと配列は非常に重要なデータ型です。通常、オブジェクトはクラスのインスタンスを表すために使用され、配列は複数の値を格納するために使用されます。場合によっては、操作を容易にするために PHP オブジェクトを配列に変換する必要があります。この記事では、PHP オブジェクトを配列に変換する方法を説明します。
1. 強制型変換の使用
PHP では、強制型変換演算子を使用してオブジェクトを配列に変換できます。この記号は、オブジェクトの前に置かれた 2 つの括弧です。例:
$array = (array) $object;
これを実行すると、オブジェクトのすべてのプロパティと値が配列に変換されます。オブジェクトのプロパティが配列のキーとなり、対応するプロパティの値が配列の値になります。
ただし、このメソッドを使用してオブジェクトを変換するには、いくつかの制限があります。まず、プライベート プロパティと保護されたプロパティは変換できません。変換できるのはパブリック プロパティのみです。次に、オブジェクトが他のオブジェクトをネストする場合は、クラスの __toString()
メソッドで文字列表現を定義する必要があります。そうしないと、正しく変換されません。
2. オブジェクト イテレータの使用
PHP のオブジェクト イテレータは、オブジェクトがそのプロパティと値を特定の方法で反復できるようにする特別なインターフェイスです。イテレータ インターフェイスを実装すると、キャストを使用する代わりにオブジェクトを配列に変換できます。
次は、イテレータ インターフェイスを使用してオブジェクトを配列に変換する方法を示す簡単な例です:
class User implements Iterator { private $data = ['name' => 'John', 'email' => 'john@example.com']; private $position = 0; public function rewind() { $this->position = 0; } public function current() { $keys = array_keys($this->data); $key = $keys[$this->position]; return [ 'key' => $key, 'value' => $this->data[$key] ]; } public function key() { $keys = array_keys($this->data); return $keys[$this->position]; } public function next() { ++$this->position; } public function valid() { $keys = array_keys($this->data); return isset($keys[$this->position]); } public function toArray() { $data = array(); foreach ($this as $key => $value) { $data[$value['key']] = $value['value']; } return $data; } } $user = new User(); print_r($user->toArray());
この例では、Iterator
インターフェイスを実装します。および current()
メソッドでオブジェクトのプロパティのキーと値のペアを返します。次に、toArray()
メソッドで、foreach
ループを使用して新しい配列を作成します。
反復子インターフェイスを実装し、toArray()
メソッドで foreach
ループを使用することで、オブジェクトを配列に変換できます。
3. (array) json_decode()
クラスが複雑で、複数のネストされたオブジェクトが含まれている場合、反復子インターフェイスの実装は非常に面倒になる可能性があります。この場合、json_decode()
キャストと (array)
キャストを組み合わせて使用して、オブジェクトを配列に変換できます。
サンプル コードは次のとおりです。
class User { private $name = "John"; private $email = "john@example.com"; private $address; public function __construct() { $this->address = new Address("100 Main St", "New York"); } } class Address { private $street; private $city; public function __construct($street, $city) { $this->street = $street; $this->city = $city; } } $user = new User(); $array = (array) json_decode(json_encode($user), true); print_r($array);
この例では、User
クラスと Address
クラスを定義します。 User
クラスには Address
オブジェクトが含まれています。次に、json_encode()
を使用して $user
オブジェクトを JSON 文字列に変換し、(array)
キャストを使用してそれを配列に変換します。最後に、print_r()
を使用して配列を出力します。
JSON 形式は PHP 配列の形式とほぼ同じであるため、(array) json_decode()
キャスターを使用すると、JSON 文字列が PHP 配列に変換されます。
4. get_object_vars() を使用する
クラスが親クラスを継承しておらず、ネストされたオブジェクトがない場合は、PHP の組み込み get_object_vars()## を使用できます。 # 関数 オブジェクトを配列に変換します。この関数は、非パブリックのプロパティとメソッドを除く、オブジェクトのすべてのプロパティと値を返します。
class User { public $name = "John"; public $email = "john@example.com"; } $user = new User(); $array = get_object_vars($user); print_r($array);この例では、2 つのパブリック プロパティ
$name と を含む
User クラスを定義します。
$メール。次に、
$user オブジェクトを作成し、
get_object_vars() 関数を使用して配列に変換しました。最後に、
print_r() 関数を使用して配列を出力します。
get_object_vars() 関数を使用して配列に変換できます。クラスがより複雑な場合は、反復子インターフェイスを実装し、
toArray() メソッドの
foreach ループを使用して配列に変換できます。クラスにネストされたオブジェクトが含まれている場合、それを JSON 文字列に変換し、
(array) json_decode() キャストを使用して配列に変換できます。
以上がPHPオブジェクトを配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、効率的なPHPアレイ重複排除について説明します。 Array_unique()などの組み込み関数をカスタムハッシュマップアプローチと比較し、配列のサイズとデータ型に基づいてパフォーマンスのトレードオフを強調します。 最適な方法は、プロビリに依存します

この記事では、PHPアレイの重複排除を分析し、素朴なアプローチ(O(n²))のパフォーマンスボトルネックを強調しています。 カスタム関数、splobjectStorage、およびハッシュセットの実装を使用して、array_unique()を使用して効率的な代替案を調査し、達成します

この記事では、Keyの一意性を使用してPHPアレイ重複排除について説明します。 直接的な重複除去方法ではありませんが、キーユニークネスを活用することで、キーに値をマッピングして重複を上書きすることにより、一意の値を持つ新しい配列を作成できます。 このAP

この記事では、RabbitMQとRedisを使用してPHPでメッセージキューを実装する詳細を示します。 それは、それらのアーキテクチャ(AMQP対インメモリ)、機能、および信頼性メカニズム(確認、トランザクション、永続性)を比較します。デザインのベストプラクティス、エラー

この記事では、PSRの推奨事項(PSR-1、PSR-2、PSR-4、PSR-12)に焦点を当てた現在のPHPコーディング基準とベストプラクティスを検証します。 一貫したスタイリング、意味のある命名、EFFを通じてコードの読みやすさと保守性を改善することを強調しています

この記事では、PHP拡張機能のインストールとトラブルシューティングの詳細で、PECLに焦点を当てています。 インストール手順(検索、ダウンロード/コンパイル、サーバーの再起動、再起動)、トラブルシューティングテクニック(ログのチェック、インストールの確認、

この記事では、大規模なデータセットのPHPアレイ重力化の最適化について説明します。 Array_unique()、array_flip()、splobjectStorage、事前ソートなどの手法を調べ、効率を比較します。 大規模なデータセットの場合、チャンク、データブを示唆しています

この記事では、PHPの反射APIについて説明し、クラス、方法、およびプロパティのランタイム検査と操作を可能にします。 一般的なユースケース(ドキュメンテーション生成、ORM、依存関係注入)とパフォーマンスオーバーヘアに対する注意の詳細


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック









