PHP では、array_merge_recursive()、json_encode()/json_decode()、および clone メソッドを使用して配列をコピーできます。 array_merge_recursive() はネストされた配列を再帰的にマージしますが、遅くなります。json_encode()/json_decode() は高速ですが、メモリを消費します。clone は最速ですが、オブジェクト (配列を含む) に対してのみ機能します。
#PHP での配列のディープ コピーのさまざまな方法を探る: パフォーマンス、メリット、デメリット
はじめに
PHP では、配列のコピーは一般的な操作です。ただし、デフォルトの代入演算子は配列のコピーを作成せず、元の配列への参照を作成します。場合によっては、これが予期せぬ結果を招く可能性があります。したがって、PHP で配列をディープ コピーするさまざまな方法と、その長所と短所を理解することが重要です。メソッド 1: array_merge_recursive()
array_merge_recursive() この関数は、複数の配列を新しい配列にマージし、ネストされた配列を再帰的にマージします。配列。配列のディープコピーを作成するために使用できます。
$original = ['key1' => 'value1', 'key2' => ['subkey1' => 'subvalue1']]; $copy = array_merge_recursive([], $original);
利点:
欠点:
方法 2: json_encode() および json_decode()
json_encode() この関数は、PHP 変数を JSON 文字列に変換します。 ,
json_decode()関数はJSON文字列をPHP変数に変換します。これらの関数を使用して、配列のディープ コピーを作成できます。
$original = ['key1' => 'value1', 'key2' => ['subkey1' => 'subvalue1']]; $copy = json_decode(json_encode($original), true);
利点:
より高速です。
欠点:
方法 3: clone
$original = ['key1' => 'value1', 'key2' => ['subkey1' => 'subvalue1']]; $copy = clone $original;
利点:
欠点:
実践的なケース
次は、PHP 配列のディープ コピーの使用方法を示す実践的なケースです。上の例では、ネストされた配列を含むプリミティブ配列を作成します。次に、array_merge_recursive()
、json_encode()/json_decode()、
clone を使用して 3 つのディープ コピーを作成しました。最後に、
var_dump() を使用してコピーが元の配列と異なることを検証します。結果は
true で、これらのコピーが元の配列の独立したインスタンスであることを示します。
以上がPHP 配列のディープ コピーに対するさまざまなアプローチを検討します: パフォーマンス、長所と短所の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。