ホームページ  >  記事  >  バックエンド開発  >  PHP での配列のディープ コピーに関する包括的なガイド: メソッド分析とパフォーマンスの比較

PHP での配列のディープ コピーに関する包括的なガイド: メソッド分析とパフォーマンスの比較

王林
王林オリジナル
2024-05-02 18:33:01881ブラウズ

PHP 配列をディープコピーするためのメソッド: array_map()、clone()、JSON シリアル化と逆シリアル化、recurse_copy()。パフォーマンスの比較では、PHP 7.4 バージョンでは recurse_copy() のパフォーマンスが最も高く、次に array_map() と clone() のパフォーマンスが比較的低いですが、複雑なデータ構造のコピーに適しています。

PHP での配列のディープ コピーに関する包括的なガイド: メソッド分析とパフォーマンスの比較

PHP での配列のディープ コピーに関する包括的なガイド: メソッド分析とパフォーマンスの比較

PHP での配列のコピーは必ずしも簡単ではありません。デフォルトでは、PHP はシャロー コピーを使用します。これは、実際のデータではなく、配列内の参照のみをコピーすることを意味します。これにより、配列のコピーを個別に処理する必要がある場合に問題が発生する可能性があります。

配列をディープ コピーする方法は次のとおりです。

1. array_map()各要素を再帰的に処理します。

function deepCopy1($array) {
  return array_map(function($value) {
    if (is_array($value)) {
      return deepCopy1($value);
    } else {
      return $value;
    }
  }, $array);
}

2 を使用します。 #clone()配列を再帰的にコピーします
function deepCopy2($array) {
  if (is_array($array)) {
    return array_map(function($value) {
      return clone $value;
    }, $array);
  } else {
    return $array;
  }
}

3。JSON シリアル化と逆シリアル化を使用します

function deepCopy3($array) {
  return json_decode(json_encode($array), true);
}

4。

recurse_copy() 関数を使用します (PHP にのみ適用可能)。 7.4)
function deepCopy4($array) {
  return recurse_copy($array);
}

パフォーマンスの比較

次の配列を使用してパフォーマンスを比較します:

$array = [
  'name' => 'John Doe',
  'age' => 30,
  'address' => [
    'street' => 'Main Street',
    'city' => 'New York',
    'state' => 'NY'
  ]
];

次のコードを使用してテストします:

$start = microtime(true);
deepCopy1($array);
$end = microtime(true);
$time1 = $end - $start;

$start = microtime(true);
deepCopy2($array);
$end = microtime(true);
$time2 = $end - $start;

$start = microtime(true);
deepCopy3($array);
$end = microtime(true);
$time3 = $end - $start;

$start = microtime(true);
deepCopy4($array);
$end = microtime(true);
$time4 = $end - $start;

Result As

方法時間 (秒)0.0000130.000014recurse_copy()結論:
array_map ()
clone()
json_encode/json_decode#0.000021
# 0.000009

recurse_copy() 関数は、PHP 7.4 バージョンのパフォーマンスで最高のものを提供します。

array_map()

clone() による。 json_encode/json_decode メソッドはパフォーマンスが比較的低いですが、複雑なデータ構造のディープ コピーが必要な状況に適しています。

以上がPHP での配列のディープ コピーに関する包括的なガイド: メソッド分析とパフォーマンスの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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