【PHP】(object)array()と(array)$objectとは?オブジェクトを連想配列に、連想配列をオブジェクトに変換する方法

PHP
記事内に広告が含まれていることがあります。

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)があったら、その形に変換しますよという意味になる。

必要に応じて使いまわせると便利。

タイトルとURLをコピーしました