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

PHPでオブジェクトを配列に変換する方法

PHPz
リリース: 2023-04-24 16:03:57
オリジナル
488 人が閲覧しました

PHP では、オブジェクトと配列は非常に一般的に使用されるデータ型です。オブジェクトはプロパティとメソッドをカプセル化する構造であり、配列はキーと値のペアの順序付けされたセットです。シナリオによっては、データ操作を容易にするためにオブジェクトを配列オブジェクトに変換する必要がある場合があります。

PHP では、オブジェクトを配列に変換するために強制型変換演算子が使用されます。演算子は "()" (括弧) です。同時に、配列内に接頭辞 "array" を追加できます。配列キー名を指定する括弧:

$array = (array) $object;        //强制类型转换,使用默认键名
$array = (array)($object);       //同上
$array = (array) $object_arrray; //强制类型转换并指定键名数组
ログイン後にコピー

キー名が指定されていない場合、キャスト演算子はデフォルトのメソッドを使用してオブジェクトを配列に変換します。具体的には、各オブジェクト属性は次のように配列に追加されます。キーと値のペア、およびキー。名前は属性名で、キー値は属性値です。オブジェクトに他のオブジェクトが含まれている場合、これらのオブジェクトは再帰的に配列に変換されます。次のコード:

class Person
{
    public $name = "David";
    public $age = 32;
    public $profession = "Software Engineer";
}

class Company
{
    public $name = "ABC Company";
    public $employees;
    
    public function __construct() {
        $this->employees = array(
            new Person(),
            new Person(),
            new Person()
        );
    }
}

$company = new Company();
$array = (array)($company);

print_r($array);
ログイン後にコピー

出力結果は次のとおりです:

Array
(
    [name] => ABC Company
    [employees] => Array
        (
            [0] => Person Object
                (
                    [name] => David
                    [age] => 32
                    [profession] => Software Engineer
                )

            [1] => Person Object
                (
                    [name] => David
                    [age] => 32
                    [profession] => Software Engineer
                )

            [2] => Person Object
                (
                    [name] => David
                    [age] => 32
                    [profession] => Software Engineer
                )

        )

)
ログイン後にコピー

ご覧のとおり、オブジェクト $company は強制的に配列 ## に変換されます。 #$array$company オブジェクトのすべてのプロパティも含まれます。

上記の例では、キャストはオブジェクトのプロパティを配列のキーと値のペアに変換するだけで、オブジェクトのメソッドは変換されないことがわかります。オブジェクトのメソッドを配列に変換する必要がある場合は、クラス内のマジック メソッド

__sleep() および __wakeup() を通じて実装する必要があります。このうち、__sleep() メソッドはオブジェクトのすべてのプロパティを配列に保存するために使用され、__wakeup() メソッドは保存された配列をオブジェクトに変換するために使用されます。 。

class Person
{
    public $name = "David";
    public $age = 32;
    public $profession = "Software Engineer";
    
    public function run() {
        echo "I am running...";
    }
    
    public function sleep() {
        echo "I am sleeping...";
    }
    
    public function __sleep() {
        return array(
            "name",
            "age",
            "profession"
        );
    }
    
    public function __wakeup() {
    }
}

$person = new Person();
$array = (array)($person);

print_r($array);
ログイン後にコピー
出力結果は次のとおりです:

Array
(
    [name] => David
    [age] => 32
    [profession] => Software Engineer
)
ログイン後にコピー
出力結果には

$person オブジェクトの属性のみが含まれており、メソッドは無視されていることがわかります。 。

要約すると、PHP では、キャスト演算子と

__sleep() および __wakeup() メソッドを使用して、オブジェクトを配列オブジェクトに変換できます。 、より柔軟なデータ操作を実現します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート