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

PHPはオブジェクトを配列オブジェクトに変換します

王林
リリース: 2023-05-11 09:49:06
オリジナル
569 人が閲覧しました

PHP では通常、データを渡して処理する必要があります。データを処理するときは、オブジェクトを配列オブジェクトに変換する必要があります。 PHP は、これを行うための非常に便利なメソッドを提供します。

PHP では、get_object_vars 関数を使用してオブジェクトを配列オブジェクトに変換できます。この関数はオブジェクトをパラメータとして受け取り、オブジェクトのすべてのメンバー変数とそれらに対応する値を含む配列を返します。

次は、get_object_vars 関数を使用してオブジェクトを配列オブジェクトに変換する例です。

class Person {
    public $name = "John";
    public $age = 30;
    private $gender = "Male";
}

$person = new Person();

$array = get_object_vars($person);

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

出力結果:

Array
(
    [name] => John
    [age] => 30
)
ログイン後にコピー

As you上記のコードからわかるように、get_object_vars 関数を使用して、Person クラスのインスタンス $person を配列 $array# に変換します。 ##。配列 $array には、メンバー変数 name および age とそれらに対応する値が含まれます。

クラスのプライベート メンバー変数の値は、

get_object_vars 関数を使用して取得できないことに注意してください。上の例では、プライベート メンバー変数 gender の値は配列内の要素に変換されません。

クラスのプライベート メンバー変数を取得する必要がある場合は、PHP アクセス制御構文で

__get 関数を使用できます。この関数は、オブジェクトのプライベート メンバー変数とその対応する値を取得するために使用されます。

次は、

__get 関数を使用して、オブジェクトのプライベート メンバー変数を配列オブジェクトに変換する例です。

class Person {
    public $name = "John";
    public $age = 30;
    private $gender = "Male";

    public function __get($property) {
        if (property_exists($this, $property)) {
            return $this->$property;
        }
    }
}

$person = new Person();

$array = array();

foreach ($person as $key => $value) {
    $array[$key] = $value;
}

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

出力結果:

Array
(
    [name] => John
    [age] => 30
    [gender] => Male
)
ログイン後にコピー
上から このコードからわかるように、

__get 関数を使用して、オブジェクト $person## のプライベート メンバー変数 gender の値を取得します。 # それを配列内の $ array に追加します。最後に、$array 配列の内容を出力しました。プライベート メンバー変数 gender の値も配列の要素に正常に変換されたことがわかります。 概要:

PHP では、

get_object_vars

関数を使用してオブジェクトを配列オブジェクトに変換できます。この関数は、オブジェクトのパブリック メンバー変数とそれに対応する値を簡単に取得できます。ただし、オブジェクトのプライベート メンバー変数の値を取得する必要がある場合は、PHP アクセス制御構文で __get 関数を使用してそれを実現する必要があります。

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

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