PHP プログラミングでは、通常、オブジェクトを使用してデータを保存および処理します。ただし、場合によっては、処理のためにオブジェクトを配列に変換する必要があります。
PHP では、get_object_vars()
関数を使用してオブジェクトを配列に変換できます。この関数は、配列に変換されるオブジェクトを 1 つのパラメーターとして受け取ります。
次は例です:
class Person { public $name = 'Tom'; public $age = 25; private $email = 'tom@email.com'; } $person = new Person(); $personArray = get_object_vars($person); print_r($personArray);
この例では、Person
という名前のクラスを定義し、その中に 3 つの属性を定義します: public$name
と $age
、およびプライベート $email
属性。次に、Person
クラスをインスタンス化し、それを get_object_vars()
関数に渡して配列に変換しました。最後に、personArray
配列を出力します。
出力結果は次のとおりです。
Array ( [name] => Tom [age] => 25 )
パブリック属性のみが配列に変換され、プライベート属性 $email
は含まれていないことがわかります。配列。
プライベート プロパティを含めたい場合は、ReflectionClass
クラスを使用できます。このクラスを使用すると、クラスのプライベート プロパティとメソッドにアクセスして変更することができます。
次は例です:
class Person { public $name = 'Tom'; public $age = 25; private $email = 'tom@email.com'; } $person = new Person(); $reflector = new ReflectionClass($person); $properties = $reflector->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PRIVATE); $personArray = array(); foreach ($properties as $property) { $property->setAccessible(true); $personArray[$property->getName()] = $property->getValue($person); } print_r($personArray);
この例では、ReflectionClass クラスを使用してクラス情報を取得します。 Person
クラスのインスタンスを ReflectionClass
コンストラクターに渡し、getProperties()
メソッドを使用して、ReflectionProperty を使用してクラスのプロパティを取得します。 ::IS_PUBLIC
および ReflectionProperty::IS_PRIVATE
パラメータには、すべてのパブリック プロパティとプライベート プロパティが含まれます。次に、setAccessible()
メソッドを使用して各プライベート プロパティをアクセス可能に設定し、getValue()
メソッドを使用して各プロパティの値を取得します。最後に、これらのプロパティと値を $personArray
配列に保存し、出力を出力します。
出力結果は以下のとおりです。
Array ( [name] => Tom [age] => 25 [email] => tom@email.com )
プライベート属性 $email
を含むすべての属性が配列に変換されていることがわかります。
概要:
関数 get_object_vars()
を使用してオブジェクトを配列に変換しますが、含まれるのはパブリック プロパティのみです。プライベート プロパティを含める必要がある場合は、ReflectionClass クラスを使用し、setAccessible()
メソッドを使用してプライベート プロパティをアクセス可能な状態に設定し、その後 getValue()
を使用します。メソッドを使用してプライベート プロパティの値を取得します。
以上がPHPでオブジェクトを配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。