PHP で配列のキー値を交換する場合、メソッドのパフォーマンスは配列のサイズによって異なります。小さい配列の場合は、array_flip() の方が高速ですが、大きい配列の場合は、unset() と [] 構文または foreach ループを使用する方が効率的です。最適化のヒントには、適切なアルゴリズムの選択、参照を使用してコピーを回避すること、unset() を使用してメモリ割り当てを削減することが含まれます。
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);
結果:
が最も高速です。
および
[] 構文または
foreach ループの方が効率的です。
最適化のヒント
) を使用して、ループ内のデータのコピーを避けます。
を使用して、ガベージ コレクションの必要性を減らします。
以上がPHP 交換配列キー値: メソッドの比較とパフォーマンスの最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。