PHP オブジェクトを連想配列に変換する

Subodh Poudel 2023年1月30日
  1. array キーワードを使用して StdClass のオブジェクトをタイプキャストし、PHP で連想配列に変換する
  2. PHP でユーザー定義クラス内の StdClass のオブジェクトを使用してオブジェクトを連想配列に変換する
  3. PHP で json_encode() および json_decode() 関数を使用してオブジェクトを連想配列に変換する
PHP オブジェクトを連想配列に変換する

array キーワードを使用して、PHP オブジェクトを StdClass のオブジェクトを型キャストする連想配列に変換するメソッドを紹介します。var_dump() 関数を使用して、連想配列を表示します。

2 番目のアプローチは、PHP オブジェクトを連想配列に変換して、ユーザー定義クラスのコンストラクターに StdClass を作成する別のメソッドを示しています。array キーワードを使用して、最初のメソッドと同様にオブジェクトを連想配列に変換します。この方法は、オブジェクト指向のアプローチに従います。

また、json_encode() および json_decode() 関数を使用して、PHP でオブジェクトを連想配列に変換する別のメソッドを紹介します。StdClass を使用して、オブジェクトと動的プロパティを作成します。

array キーワードを使用して StdClass のオブジェクトをタイプキャストし、PHP で連想配列に変換する

StdClass 空のクラスを作成して PHP でオブジェクトを作成し、そのオブジェクトを使用してプロパティを作成できます。クラスのオブジェクトは、プロパティに直接アクセスできます。また、クラスの動的プロパティを作成することもできます。array オブジェクトを使用して、オブジェクトを配列にタイプキャストできます。var_dump() 関数は、配列の型と値に関する情報をダンプします。

たとえば、new 演算子を使用して、StdClass のオブジェクト $object を作成します。car1car2 という名前の $object を使用して 2つのプロパティを作成します。プロパティに値 porschebugatti を割り当てます。array キーワードを使用して、$object 変数をタイプキャストします。$object 変数の前に括弧を付けて array キーワードをラップし、var_dump() 関数を使用して値をダンプします。以下の例は、出力セクションに示すように、オブジェクトを連想配列に変換します。配列の各要素のキーと値のペアが表示されます。

サンプルコード:

#php 7.x 
<?php
$object = new StdClass;
$object->car1 = "porsche";
$object->car2 = "bugatti";
var_dump( (array) $object );
?>

出力:

array(2) { ["car1"]=> string(7) "porsche" ["car2"]=> string(7) "bugatti" }

PHP でユーザー定義クラス内の StdClass のオブジェクトを使用してオブジェクトを連想配列に変換する

クラスのコンストラクターで StdClass のインスタンスを作成し、array キーワードを使用してクラスのオブジェクトを連想配列に変換できます。クラスを作成し、そのいくつかのプロパティを定義できます。クラスのコンストラクターは、クラスのプロパティを特定の値に初期化します。StdClass のオブジェクトを作成し、クラスのプロパティの 1つに割り当てることができます。new 演算子は、クラスとともにコンストラクターを呼び出します。呼び出しの直前に array キーワードを使用して、クラスのオブジェクトを連想配列に変換できます。

たとえば、クラス Motorcycle を作成します。private アクセス修飾子を $name$color、および $type として使用して 3つのクラスプロパティを作成します。クラスのコンストラクターを作成し、コンストラクター内でプロパティの値を初期化します。nameHuskycolorwhite を書き、typeStdClass のオブジェクトを作成します。$this キーワードを使用して、プロパティを初期化します。クラスの外で、Motorcycle クラスを呼び出し、呼び出す前に array キーワードを使用してタイプキャストします。var_dump() 関数を使用して、型キャストされた配列に関する情報をダンプします。

サンプルコード:

#php 7.x 
class Motorcycle{
    private $name;
    private $color;
    private $type;
    public function __construct(){
        $this->name = "Husky";
        $this->color = "white";
        $this->type = new StdClass;
    }
}
var_dump( (array) new Motorcycle );

出力:

array(3) { ["Motorcyclename"]=> string(5) "Husky" ["Motorcyclecolor"]=> string(5) "white" ["Motorcycletype"]=> object(stdClass)#2 (0) { } }

PHP で json_encode() および json_decode() 関数を使用してオブジェクトを連想配列に変換する

json_encode() 関数は値を JSON オブジェクトにエンコードし、json_decode() 関数は JSON オブジェクトを PHP オブジェクトに変換します。json_decode() 関数の 2 番目のパラメーターであるブール値は、JSON オブジェクトを変換する必要があるものを示します。true 値は JSON オブジェクトを連想配列に変換し、false 値はそれを PHP オブジェクトに変換します。

たとえば、StdClass のオブジェクトを作成し、それを $object 変数に割り当てます。オブジェクトプロパティの 2つの値に MustangManang という名前を付け、それらを place1place2 変数に格納します。$object 変数で json_encode() 関数を使用し、値を $json 変数に格納します。次に、$json 変数で json_decode() 関数を使用し、2 番目のパラメーターとしてブール値 true を使用します。値を $array 変数に格納します。var_dump() 関数を使用して変数をダンプします。

以下の例では、変数 $objectStdClass オブジェクトを保持しています。json_ecode() 関数は、オブジェクトを JSON 文字列に変換します。json_decode() 関数は、JSON 文字列を連想配列に変換します。

サンプルコード:

#php 7.x 
<?php
$object = new StdClass;
$object->place1 = "Mustang";
$object->place2 = "Manang";
$json= json_encode($object);
$array = json_decode($json, true);
var_dump($array);
?>

出力:

array(2) { ["place1"]=> string(7) "Mustang" ["place2"]=> string(6) "Manang" }
著者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

関連記事 - PHP Object