ホームページ >バックエンド開発 >PHPチュートリアル >PHP 交換配列キー値: メソッドの比較とパフォーマンスの最適化

PHP 交換配列キー値: メソッドの比較とパフォーマンスの最適化

PHPz
PHPzオリジナル
2024-05-04 15:06:01591ブラウズ

PHP で配列のキー値を交換する場合、メソッドのパフォーマンスは配列のサイズによって異なります。小さい配列の場合は、array_flip() の方が高速ですが、大きい配列の場合は、unset() と [] 構文または foreach ループを使用する方が効率的です。最適化のヒントには、適切なアルゴリズムの選択、参照を使用してコピーを回避すること、unset() を使用してメモリ割り当てを削減することが含まれます。

PHP 交换数组键值:方法比较和性能优化

PHP の配列キー値の交換: メソッドの比較とパフォーマンスの最適化

キーと値を交換する必要がある場合PHP 配列では、いくつかのメソッドが利用可能です。この記事では、これらのメソッドのパフォーマンスを比較し、効率を向上させるための最適化のヒントをいくつか紹介します。

メソッド

##array_flip()

array_flip() この関数は、次のキーの合計を直接交換します。配列の値。使用法は次のとおりです。

$flipped_array = array_flip($array);

unset() と [] 構文を混合します

unset() 関数を使用して、古いキーを削除し、角かっこを含む割り当て構文を使用して新しいキーを追加します。

unset($array['old_key']);
$array['new_key'] = $array['old_value'];

foreach() ループ

は配列を走査し、一時変数を使用してキーと値を交換できます。

foreach ($array as $key => $value) {
  $temp = $key;
  $key = $value;
  $value = $temp;
}

パフォーマンスの比較

小さい配列 (アイテム数が 100 未満) の場合、

array_flip() は他のメソッドよりも高速である可能性があります。ただし、より大きな配列の場合は、unset()[] 構文を組み合わせたり、foreach ループを使用した方が効率的であることがよくあります。

$array_size = 100000;
$array = range(1, $array_size);

$time_array_flip = microtime(true);
$flipped_array_array_flip = array_flip($array);
$time_array_flip = microtime(true) - $time_array_flip;

$time_unset_array = microtime(true);
foreach ($array as $key => $value) {
  unset($array[$key]);
  $array[$value] = $key;
}
$time_unset_array = microtime(true) - $time_unset_array;

$time_foreach = microtime(true);
foreach ($array as $key => &$value) {
  $temp = $key;
  $key = $value;
  $value = $temp;
}
unset($value); // PHP 8 之前的版本需要手动释放引用
$time_foreach = microtime(true) - $time_foreach;

printf("array_flip(): %.6fs\n", $time_array_flip);
printf("unset(): %.6fs\n", $time_unset_array);
printf("foreach(): %.6fs\n", $time_foreach);

結果:

    小さな配列 (100 項目) の場合、
  • array_flip() が最も高速です。
  • 大きな配列 (10,000 項目を超える) の場合は、
  • unset() および [] 構文または foreach ループの方が効率的です。

最適化のヒント

  • 適切なアルゴリズムの選択: サイズに基づいて最高のパフォーマンスを持つアルゴリズムを選択してください。配列。
  • 不必要なコピーを避ける: 参照 (&) を使用して、ループ内のデータのコピーを避けます。
  • メモリ割り当てを削減します。 unset() を使用して、ガベージ コレクションの必要性を減らします。

以上がPHP 交換配列キー値: メソッドの比較とパフォーマンスの最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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