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

PHPz
リリース: 2023-05-19 09:06:07
オリジナル
1599 人が閲覧しました

PHP では、配列とオブジェクトは 2 つの一般的なデータ型であり、各データ型には独自の用途と制限があります。場合によっては、これら 2 つのデータ型の間で変換する必要があることがあります。この記事では、配列をオブジェクトに変換する方法について説明します。

PHP では、型変換またはキャスト構文を使用して、配列をオブジェクトに変換できます。一般的な方法は次の 2 つです。

方法 1: (オブジェクト) キャスト変換を使用する

PHP では、(オブジェクト) キャスト構文を使用して配列をオブジェクトに変換できます。例:

$arr = array('name' => 'Tom', 'age' => 20);
$obj = (object) $arr;
ログイン後にコピー

上記のコードは、$arr 配列を $obj オブジェクトに変換します。

(オブジェクト) キャスト構文を使用する場合、配列キー名がオブジェクト属性名になり、配列キー値がオブジェクト属性値になることに注意してください。元の配列に多次元配列が含まれている場合は、入れ子になったオブジェクトに変換されます。

例:

$arr = array(
   'name' => 'Tom',
   'age' => 20,
   'contact' => array(
      'email' => 'tom@example.com',
      'phone' => '1234567890'
   )
);

$obj = (object) $arr;
ログイン後にコピー

上記のコードでは、$obj オブジェクトには $arr 配列内のすべてのデータが含まれており、contact 配列はネストされたオブジェクトに変換されます。

方法 2: json_decode() 関数を使用する

キャスト構文の使用に加えて、json_decode() 関数を使用して配列をオブジェクトに変換することもできます。

まず、配列を JSON 形式の文字列に変換し、次に json_decode() 関数を使用してオブジェクトに変換する必要があります。例:

$arr = array('name' => 'Tom', 'age' => 20);
$json = json_encode($arr);
$obj = json_decode($json);
ログイン後にコピー

上記のコードでは、$json 変数には $arr 配列から変換された JSON 文字列が含まれており、$obj 変数は json_decode() 関数を通じて $json 文字列から変換されたオブジェクトです。 。

json_decode() 関数を使用して変換する場合、デフォルトでは、返されるオブジェクトはカスタム クラスではなく stdClass オブジェクトであることに注意してください。これをカスタム クラスに変換する場合は、追加のパラメーターを json_decode() 関数に渡すことができます。

例:

class Person {
   public $name;
   public $age;
}

$arr = array('name' => 'Tom', 'age' => 20);
$json = json_encode($arr);
$obj = json_decode($json, false, 512, JSON_OBJECT_AS_ARRAY);
$obj = (object) $obj;

$person = new Person();
$person->name = $obj->name;
$person->age = $obj->age;
ログイン後にコピー

上記のコードでは、JSON_OBJECT_AS_ARRAY パラメーターを使用して、json_decode() 関数に stdClass オブジェクトの代わりに配列を返すように指示しています。次に、キャスト構文を使用して配列をオブジェクトに変換します。

最後に、カスタム クラスのメンバー変数にプロパティ値を代入することで、Person オブジェクトをインスタンス化できます。

概要

この記事では、PHP で配列をオブジェクトに変換する 2 つの一般的な方法、キャスト構文を使用する方法と json_decode() 関数を使用する方法を紹介します。どの方法を使用する場合でも、さまざまなシナリオのニーズを満たすために配列とオブジェクトの間で簡単に変換できます。

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

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