ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクトと配列を相互に変換する

PHP オブジェクトと配列を相互に変換する

WBOY
WBOYオリジナル
2023-05-07 20:14:07489ブラウズ

PHP では、オブジェクトと配列は 2 つの非常に重要なデータ型です。オブジェクトは通常、実世界のエンティティや概念を表すために使用され、配列は一連の関連データを格納するために使用されます。しかし、実際の開発では、オブジェクトを配列に変換したり、配列をオブジェクトに変換したりする必要がある場合があります。この記事では、PHP でオブジェクトと配列の間で変換する方法とテクニックを紹介します。

1. オブジェクトを配列に変換する

オブジェクトを配列に変換するには、自動変換と手動変換という 2 つの主な方法があります。

  1. 自動変換

PHP では、オブジェクトを配列のように走査したり、直接印刷したりできます。その際、PHP はオブジェクトを自動的に配列に変換します。例:

class Person {
  public $name = 'Jack';
  private $age = 30;
}

$person = new Person();
print_r($person); // 输出结果:Person Object ( [name] => Jack )

上記の例では、出力される文字列を指定するために Person クラスの __toString() メソッドを定義していませんが、オブジェクトは出力されますが、PHP は引き続きオブジェクトを name 属性を含む配列に変換できます。これは、PHP がオブジェクトのすべての public プロパティを配列のキーと値のペアとして保存する一方、private プロパティと protected プロパティにはアクセスできないためです。 。

さらに、オブジェクトをトラバースすると、PHP はオブジェクトを自動的に配列に変換します。例:

foreach ($person as $key => $value) {
  echo $key . ': ' . $value . PHP_EOL;
}

この時点で、PHP は $person オブジェクトを name 属性を含む配列に自動的に変換し、キーと値のペアを出力します。配列を走査するとき。

  1. 手動変換

オブジェクトを配列に変換するプロセスをより正確に制御する必要がある場合は、get_object_vars() を使用できます。関数を使用してオブジェクトの All 属性を手動で取得し、array() 関数を使用してそれらを配列に変換します。例:

class Person {
  public $name = 'Jack';
  private $age = 30;

  public function toArray() {
    return array(
      'name' => $this->name,
      'age' => $this->age
    );
  }
}

$person = new Person();
print_r($person->toArray()); // 输出结果:Array ( [name] => Jack, [age] => 30 )

上記の例では、nameage 配列を含む配列を返す toArray() メソッドを定義しました。属性の。ここでは、どの属性を配列に変換する必要があるか、および配列内のキーと値の対応を手動で制御できます。

2. 配列をオブジェクトに変換する

配列をオブジェクトに変換するには、配列変換と強制変換という 2 つの主な方法があります。

  1. 配列変換

配列のキー値がクラスの属性名と同じ場合、配列をクラスのインスタンス オブジェクトに変換できます。 。

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

$data = array('name' => 'Jack', 'age' => 30);
$person = (object)$data;
echo $person->name; // 输出结果:'Jack'

上記の例では、$data 配列内のキーと値のペアを使用して、Person クラスの属性に値を割り当てます。次に、配列を Person クラスのインスタンス オブジェクトに変換します。ここではキャスト演算子 (object) を使用して配列をオブジェクトに変換していることに注意してください。

もちろん、複数の配列をバッチ変換する必要がある場合は、ループを使用して変換を実行することもできます。

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

$dataList = array(
  array('name' => 'Jack', 'age' => 30),
  array('name' => 'Lucy', 'age' => 25)
);

$personList = array();
foreach ($dataList as $data) {
  $personList[] = (object)$data;
}

echo $personList[0]->name; // 输出结果:'Jack'
echo $personList[1]->name; // 输出结果:'Lucy'

上の例では、ループを使用して配列をオブジェクトにバッチ変換しました。ここでは、(object) 演算子を使用して配列をオブジェクトに変換し、それを $personList 配列に追加します。

  1. 強制変換

変換に (object) 演算子を使用することに加えて、強制型変換を使用して配列を次のように変換することもできます。オブジェクト。例:

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

$data = array('name' => 'Jack', 'age' => 30);
$person = new Person();
$person->name = $data['name'];
$person->age = $data['age'];

echo $person->name; // 输出结果:'Jack'

上の例では、まず Person クラスのインスタンス オブジェクトを作成し、次にそれに nameage## を与えます。 # プロパティには個別に値が割り当てられます。この方法では、各属性に手動で値を割り当てる必要がありますが、少し面倒に思えます。したがって、使用する場合は、特定の状況に応じて選択する必要があります。

概要

オブジェクトと配列は、PHP における 2 つの非常に重要なデータ型であり、通常、データの保存と操作に使用されます。実際の開発では、オブジェクトを配列に変換したり、配列をオブジェクトに変換したりすることがあります。この記事では、自動変換と手動変換を含め、PHP でオブジェクトと配列を変換するための方法とテクニックを紹介します。この記事が皆さんの PHP プログラミング スキルの習得と開発効率の向上に役立つことを願っています。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。