ホームページ > バックエンド開発 > PHPチュートリアル > PHP オブジェクトを連想配列にすばやく変換するにはどうすればよいですか?

PHP オブジェクトを連想配列にすばやく変換するにはどうすればよいですか?

DDD
リリース: 2024-12-21 19:07:10
オリジナル
474 人が閲覧しました

How to Quickly Convert a PHP Object into an Associative Array?

PHP オブジェクトを連想配列にすばやく変換する方法

オブジェクトベースのデータを操作する API を統合する場合、多くの場合、次のようなニーズが発生します。これらのオブジェクトを配列に変換し、配列を使用して既存のコードと一致させます。この変換を実行するための簡潔で簡単な解決策は次のとおりです。

オブジェクトを型キャストします:

オブジェクトを連想配列に変換するには、次のように単純に型キャストできます。

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

この型キャスト方法は、直接的かつ効率的なアプローチです。ただし、浅い変換のみを実行することに注意することが重要です。

キャスト配列のプロパティ アクセシビリティ:

オブジェクトを配列に型キャストする場合、次の点についてさまざまなルールが適用されます。プロパティのアクセシビリティ:

  • パブリック プロパティには、 array.
  • プライベート プロパティには変数名の先頭に 'foo' が付加されます。
  • 保護されたプロパティには変数名の先頭に '*foo' が付加されます.

整数プロパティ変換:

整数プロパティはアクセスできないため、変換された配列には表示されません。

例: 単純なプロパティの変換オブジェクト:

$object = new StdClass;
$object->foo = 1;
$object->bar = 2;

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

出力:

array(2) {
  'foo' => int(1)
  'bar' => int(2)
}
ログイン後にコピー

例: Private および Protected を持つ複雑なオブジェクトの変換プロパティ:

class Foo {
    private $foo;
    protected $bar;
    public $baz;

    public function __construct() {
        $this->foo = 1;
        $this->bar = 2;
        $this->baz = new StdClass;
    }
}

var_dump( (array) new Foo );
ログイン後にコピー

出力:

array(3) {
  'Foofoo' => int(1)
  '*bar' => int(2)
  'baz' => class stdClass#2 (0) {}
}
ログイン後にコピー

ご覧のとおり、変換された配列には、指定された先頭に付加されたプライベート プロパティと保護されたプロパティが存在します。プレフィックス。

ディープ キャストおよび非公開プロパティ:

この型キャスト メソッドはディープ キャストを実行しないことに注意してください。非パブリック属性にアクセスするには、公式 PHP ドキュメントで説明されているように、null バイトを明示的に適用する必要がある場合があります。

詳細については、リンクされたリソースを参照してください。

  • PHP 組み込みクラス stdClass: https://www.php.net/manual/en/class.stdclass.php
  • 高速 PHP オブジェクトから配列への変換に関するブログ投稿: https://dereuromark.de/2011/02/03/fast- php-object-to-array-conversion/

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

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