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

PHPz
リリース: 2023-04-23 19:42:48
オリジナル
856 人が閲覧しました

PHP 開発では、オブジェクトと配列の間で変換する必要がよくあります。一般的なアプリケーション シナリオでは、オブジェクトを配列に変換する必要があります。 PHP には、この変換プロセスを完了するためのメソッドが多数用意されています。最も一般的に使用されるメソッドは、キャスターを介してオブジェクトを配列に変換することです。

PHP では、オブジェクトを配列に変換すると、オブジェクトの属性名が自動的にキー名として使用され、属性値がキー値として配列に格納されます。同時に、PHP はオブジェクトのプライベート、プロテクト、パブリック プロパティを選択的に変換することもできます。

例を通してオブジェクトを配列に変換する方法を学びましょう:

class BlogPost {
    private $title;
    private $content;
    protected $publishedAt;

    public function __construct($title, $content) {
        $this->title = $title;
        $this->content = $content;
        $this->publishedAt = date('Y-m-d H:i:s');
    }
}

$post = new BlogPost('PHP Object Convert Array', 'PHP 中对象转换数组的实现');
$array_post = (array) $post; // 将对象转换为数组
print_r($array_post);
ログイン後にコピー

上の例では、3 つの属性を持つ BlogPost クラスを定義しました: title content、および publishedAt。このうち、titlecontent はプライベート プロパティであり、publishedAt は保護されたプロパティです。クラスのコンストラクターで、$title プロパティと $content プロパティを設定します。デフォルトでは、$publishedAt プロパティは現在時刻に設定されます。

次に、BlogPost クラスをインスタンス化し、それを配列 $array_post にキャストします。最後に、print_r 関数を使用して、$array_post 配列の内容を出力します。出力は次のようになります。 use

(array )

型変換を実行するとき、オブジェクトの属性名にはクラス名が接頭辞として付けられます。これは、PHP では、同じ属性名は 1 回しか出現できないため、属性名の競合を防ぐために、PHP がクラス名をプレフィックスとして自動的に追加します。同時に、PHP Object Convert Array を出力できる echo $array_post['BlogPosttitle']; など、配列を通じてオブジェクトのプロパティにアクセスすることもできます。 オブジェクト内にプライベート プロパティと保護されたプロパティがある場合、配列に変換された後はデフォルトでアクセスできなくなることに注意してください。ただし、それらを配列に追加したい場合は、# を渡すことができます。 # #ReflectionClass

実装するクラス:

Array
(
    [BlogPosttitle] => PHP Object Convert Array
    [BlogPostcontent] => PHP 中对象转换数组的实现
    [*publishedAt] => 2021-09-14 15:10:34
)
ログイン後にコピー
上の例では、ReflectionClass クラスと

ReflectionProperty クラスを使用して、オブジェクトのすべてのプロパティを取得しました。パブリック プロパティ、保護されたプロパティ、およびプライベート プロパティ。次に、setAccessible() メソッドを通じてアクセスできるように属性を設定し、最後に属性と属性値を配列に追加します。出力結果は次のようになります:

class BlogPost {
    private $title;
    private $content;
    protected $publishedAt;

    public function __construct($title, $content) {
        $this->title = $title;
        $this->content = $content;
        $this->publishedAt = date('Y-m-d H:i:s');
    }
}

$post = new BlogPost('PHP Object Convert Array', 'PHP 中对象转换数组的实现');

$reflection_class = new ReflectionClass($post);
$properties = $reflection_class->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED | ReflectionProperty::IS_PRIVATE); // 获取所有属性

$array_post = [];
foreach ($properties as $property) {
    $property->setAccessible(true); // 设置属性可访问
    $array_post[$property->getName()] = $property->getValue($post); // 将属性及属性值添加到数组中
}

print_r($array_post);
ログイン後にコピー
要約すると、PHP は次のようになります。オブジェクトを配列に変換する一般的な方法は、キャスト演算子 (array) を使用することです。同時に、プライベート プロパティと保護されたプロパティを配列に選択的に追加することもできます。これは、

ReflectionClass クラスを通じて実現できます。どの方法を使用する場合でも、オブジェクト データの処理と受け渡しを改善するために、オブジェクトを配列に簡単に変換できます。

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

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