PHP では、オブジェクトと配列は 2 つの非常に重要なデータ型です。オブジェクトは通常、実世界のエンティティや概念を表すために使用され、配列は一連の関連データを格納するために使用されます。しかし、実際の開発では、オブジェクトを配列に変換したり、配列をオブジェクトに変換したりする必要がある場合があります。この記事では、PHP でオブジェクトと配列の間で変換する方法とテクニックを紹介します。
1. オブジェクトを配列に変換する
オブジェクトを配列に変換するには、自動変換と手動変換という 2 つの主な方法があります。
PHP では、オブジェクトを配列のように走査したり、直接印刷したりできます。その際、PHP はオブジェクトを自動的に配列に変換します。例:
class Person { public $name = 'Jack'; private $age = 30; } $person = new Person(); print_r($person); // 输出结果:Person Object ( [name] => Jack )
上記の例では、出力される文字列を指定するために Person
クラスの __toString()
メソッドを定義していませんが、オブジェクトは出力されますが、PHP は引き続きオブジェクトを name
属性を含む配列に変換できます。これは、PHP がオブジェクトのすべての public
プロパティを配列のキーと値のペアとして保存する一方、private
プロパティと protected
プロパティにはアクセスできないためです。 。
さらに、オブジェクトをトラバースすると、PHP はオブジェクトを自動的に配列に変換します。例:
foreach ($person as $key => $value) { echo $key . ': ' . $value . PHP_EOL; }
この時点で、PHP は $person
オブジェクトを name
属性を含む配列に自動的に変換し、キーと値のペアを出力します。配列を走査するとき。
オブジェクトを配列に変換するプロセスをより正確に制御する必要がある場合は、get_object_vars()
を使用できます。関数を使用してオブジェクトの All 属性を手動で取得し、array()
関数を使用してそれらを配列に変換します。例:
class Person { public $name = 'Jack'; private $age = 30; public function toArray() { return array( 'name' => $this->name, 'age' => $this->age ); } } $person = new Person(); print_r($person->toArray()); // 输出结果:Array ( [name] => Jack, [age] => 30 )
上記の例では、name
と age
配列を含む配列を返す toArray()
メソッドを定義しました。属性の。ここでは、どの属性を配列に変換する必要があるか、および配列内のキーと値の対応を手動で制御できます。
2. 配列をオブジェクトに変換する
配列をオブジェクトに変換するには、配列変換と強制変換という 2 つの主な方法があります。
配列のキー値がクラスの属性名と同じ場合、配列をクラスのインスタンス オブジェクトに変換できます。 。
class Person { public $name; public $age; } $data = array('name' => 'Jack', 'age' => 30); $person = (object)$data; echo $person->name; // 输出结果:'Jack'
上記の例では、$data
配列内のキーと値のペアを使用して、Person
クラスの属性に値を割り当てます。次に、配列を Person
クラスのインスタンス オブジェクトに変換します。ここではキャスト演算子 (object)
を使用して配列をオブジェクトに変換していることに注意してください。
もちろん、複数の配列をバッチ変換する必要がある場合は、ループを使用して変換を実行することもできます。
class Person { public $name; public $age; } $dataList = array( array('name' => 'Jack', 'age' => 30), array('name' => 'Lucy', 'age' => 25) ); $personList = array(); foreach ($dataList as $data) { $personList[] = (object)$data; } echo $personList[0]->name; // 输出结果:'Jack' echo $personList[1]->name; // 输出结果:'Lucy'
上の例では、ループを使用して配列をオブジェクトにバッチ変換しました。ここでは、(object)
演算子を使用して配列をオブジェクトに変換し、それを $personList
配列に追加します。
変換に (object)
演算子を使用することに加えて、強制型変換を使用して配列を次のように変換することもできます。オブジェクト。例:
class Person { public $name; public $age; } $data = array('name' => 'Jack', 'age' => 30); $person = new Person(); $person->name = $data['name']; $person->age = $data['age']; echo $person->name; // 输出结果:'Jack'
上の例では、まず Person
クラスのインスタンス オブジェクトを作成し、次にそれに name
と age## を与えます。 # プロパティには個別に値が割り当てられます。この方法では、各属性に手動で値を割り当てる必要がありますが、少し面倒に思えます。したがって、使用する場合は、特定の状況に応じて選択する必要があります。
以上がPHP オブジェクトと配列を相互に変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。