PHPでオブジェクトから配列に変換、および、配列からオブジェクトに変換する方法について。
オブジェクトを配列に変換する方法(array)
(array) を使うとオブジェクトを配列に変換することができる。
例えば、通常はクラスの中で定義したプロパティにアクセスするためには「->」を使う必要がある。
配列化をすれば[‘キー名’]で値を抜き出すことができる。
配列化した時の注意点は、public $変数名 = [ ] の場合に、変数名がキーとなり 変数名 => [ ] となること。
実例
class Test {
public $arr = [
'key1' => 'val1' ,
'key2' => 'val2' ,
'key3' => 'val3' ,
];
}
$obj = new Test; //インスタンス(オブジェクト)を生成
var_dump((array)$obj);
#出力結果
array(1) {
["arr"]=>
array(3) {
["key1"]=>
string(4) "val1"
["key2"]=>
string(4) "val2"
["key3"]=>
string(4) "val3"
}
}
オブジェクトが配列になっていることがわかる。public $arrのkey2の値にアクセスしたい場合は、(array)$obj[‘arr’][‘key1’]で取得できる。
class Test {
public $arr = [
'key1' => 'val1' ,
'key2' => 'val2' ,
'key3' => 'val3' ,
];
}
$obj = new Test;
$arr2 = (array)$obj;
echo $arr2['arr']['key1'];
#出力結果
val1
配列をオブジェクトに変換する方法 (object)
(object)配列 とすることで、配列をオブジェクトに変換できる。
$arr = [
'key1' => 'val1' ,
'key2' => 'val2' ,
'key3' => 'val3' ,
];
var_dump((object)$arr);
#出力結果
object(stdClass)#1 (3) {
["key1"]=>
string(4) "val1"
["key2"]=>
string(4) "val2"
["key3"]=>
string(4) "val3"
}
オブジェクトになったので、key1の値を取得したい場合は $arr[‘key1’] ではなく「->」でプロパティとして指定する必要がある。
$arr = [
'key1' => 'val1' ,
'key2' => 'val2' ,
'key3' => 'val3' ,
];
$obj = (object)$arr;
echo $obj->key1;
#出力結果
val1
補足
なお、配列に対して(array)を、オブジェクトに対して(object)を指定しても、変化は起こらず元のままとなる。
まとめ
PHPの中で変数の冒頭に、(array)や(object)があったら、その形に変換しますよという意味になる。
必要に応じて使いまわせると便利。