PHP では、オブジェクトと配列は非常に一般的に使用されるデータ型です。オブジェクトはプロパティとメソッドをカプセル化する構造であり、配列はキーと値のペアの順序付けされたセットです。シナリオによっては、データ操作を容易にするためにオブジェクトを配列オブジェクトに変換する必要がある場合があります。
PHP では、オブジェクトを配列に変換するために強制型変換演算子が使用されます。演算子は "()" (括弧) です。同時に、配列内に接頭辞 "array" を追加できます。配列キー名を指定する括弧:
$array = (array) $object; //强制类型转换,使用默认键名 $array = (array)($object); //同上 $array = (array) $object_arrray; //强制类型转换并指定键名数组
キー名が指定されていない場合、キャスト演算子はデフォルトのメソッドを使用してオブジェクトを配列に変換します。具体的には、各オブジェクト属性は次のように配列に追加されます。キーと値のペア、およびキー。名前は属性名で、キー値は属性値です。オブジェクトに他のオブジェクトが含まれている場合、これらのオブジェクトは再帰的に配列に変換されます。次のコード:
class Person { public $name = "David"; public $age = 32; public $profession = "Software Engineer"; } class Company { public $name = "ABC Company"; public $employees; public function __construct() { $this->employees = array( new Person(), new Person(), new Person() ); } } $company = new Company(); $array = (array)($company); print_r($array);
出力結果は次のとおりです:
Array ( [name] => ABC Company [employees] => Array ( [0] => Person Object ( [name] => David [age] => 32 [profession] => Software Engineer ) [1] => Person Object ( [name] => David [age] => 32 [profession] => Software Engineer ) [2] => Person Object ( [name] => David [age] => 32 [profession] => Software Engineer ) ) )
ご覧のとおり、オブジェクト $company
は強制的に配列 ## に変換されます。 #$array、
$company オブジェクトのすべてのプロパティも含まれます。
__sleep() および
__wakeup() を通じて実装する必要があります。このうち、
__sleep() メソッドはオブジェクトのすべてのプロパティを配列に保存するために使用され、
__wakeup() メソッドは保存された配列をオブジェクトに変換するために使用されます。 。
class Person { public $name = "David"; public $age = 32; public $profession = "Software Engineer"; public function run() { echo "I am running..."; } public function sleep() { echo "I am sleeping..."; } public function __sleep() { return array( "name", "age", "profession" ); } public function __wakeup() { } } $person = new Person(); $array = (array)($person); print_r($array);
Array ( [name] => David [age] => 32 [profession] => Software Engineer )
$person オブジェクトの属性のみが含まれており、メソッドは無視されていることがわかります。 。
__sleep() および
__wakeup() メソッドを使用して、オブジェクトを配列オブジェクトに変換できます。 、より柔軟なデータ操作を実現します。
以上がPHPでオブジェクトを配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。