ホームページ >バックエンド開発 >PHPの問題 >PHPでobjを配列に変換する方法

PHPでobjを配列に変換する方法

PHPz
PHPzオリジナル
2023-04-27 09:07:31743ブラウズ

PHP 開発では、データの転送と処理を容易にするために、オブジェクトを配列に変換する必要がある場合があります。この記事では、PHP でオブジェクトを配列に変換する方法を紹介します。

1. 変換には get_object_vars 関数を使用します

PHP の組み込み関数 get_object_vars は、オブジェクト内のすべての表示属性の配列表現を取得できます (キーは属性名、値は属性値) を変換できます 返された配列は、必要な配列として直接使用されます。

サンプルコード:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$arr = get_object_vars($car);
print_r($arr);

実行結果:

Array
(
    [brand] => Audi
    [model] => A6
)

$price プロパティはプライベートであるため、返される配列には表示されないことがわかります。

2. json_decode 関数を使用して変換する

PHP 組み込み関数 json_decode を使用して、オブジェクトを JSON 形式の文字列に変換し、それを配列に変換できます。

サンプルコード:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$jsonStr = json_encode($car);
$arr = json_decode($jsonStr, true);
print_r($arr);

実行結果:

Array
(
    [brand] => Audi
    [model] => A6
)

同様に、$price プロパティはプライベートであるため、変換された配列には表示されません。

3. 変換に型キャストを使用する

PHP では、get_object_vars 関数と json_decode 関数を使用してオブジェクトを配列に変換するほかに、キャストを使用して変換することもできます。オブジェクトを配列型に強制することができます。返された配列のキーはプロパティ名で、値はプロパティ値です。

サンプルコード:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$arr = (array) $car;
print_r($arr);

実行結果:

Array
(
    [brand] => Audi
    [model] => A6
    [*price] => 80000
)

get_object_vars関数やjson_decode関数の変換結果とは異なり、forced後の配列には、型変換。パブリック プロパティに加えてプライベート プロパティも含まれており、プライベート プロパティを示すには * が付いています。

オブジェクトに __toString メソッドがある場合、オブジェクトが配列にキャストされるときに、__toString メソッドの戻り値が配列の最初の要素 (キー) として使用されることに注意してください。は 0 であり、その値は戻り値です)。

4. 変換にリフレクションを使用する

PHP のリフレクション機構は、クラス、オブジェクト、メソッドを解析して呼び出すことができます。リフレクションは、オブジェクトのプロパティとメソッドを取得する機能を提供します。リフレクション クラスを通じて、オブジェクトのプロパティとアクセス レベル (パブリック、プライベート、または保護) を取得できます。

サンプルコード:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$reflection = new ReflectionObject($car);
$arr = [];

foreach ($reflection->getProperties() as $property) {
    $property->setAccessible(true);
    $arr[$property->getName()] = $property->getValue($car);
}

print_r($arr);

実行結果:

Array
(
    [brand] => Audi
    [model] => A6
    [price] => 80000
)

リフレクションによりオブジェクトのプロパティを取得する場合、アクセスレベル(パブリック、プライベート)に制限されないことがわかります。または protected) と同時に、取得した属性名と属性値を配列に含めます。

要約すると、この記事では、PHP でオブジェクトを配列に変換するさまざまな方法を紹介します。実際の開発では、要件とコードの実際の状況に基づいてどちらの方法を選択する必要があります。

以上がPHPでobjを配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。