ホームページ >バックエンド開発 >PHPチュートリアル >2 つのフラットなインデックス付き配列を交互に効率的にマージするにはどうすればよいですか?
フラットなインデックス付き配列を交互にマージ
2 つの配列を交互にマージし、値を連結するのではなく 1 つずつ結果にプッシュします。これはデータの処理と操作における一般的な要件です。この場合、2 つのフラットなインデックス付き配列 $a1 と $a2 があり、それらを新しい配列 $newArray にマージして、値が次のようにインターリーブされるようにしたいと考えています: [0, 3, 1, 4, 2] 、5].
提案されているように手動ループを使用してこれを達成することは可能ですが、パフォーマンス上の利点を提供する、より効率的なネイティブ アプローチがあります。次のコードは、事前計算されたアプローチを示しています。
$count = count($a1); for ($i = 0; $i < $count; $i++) { $newArray[] = $a1[$i]; $newArray[] = $a2[$i]; }
このコードでは、最初に $a1 内の要素の数を決定します ($a1 と $a2 が同じサイズであると仮定します)。次に、ループを使用して要素を反復し、それらを $newArray に交互に追加します。次に示すように、
パフォーマンス ベンチマークにより、このアプローチの効率性が確認されます。
$a1 = array(0, 1, 2); $a2 = array(3, 4, 5); $start = microtime(TRUE); for($t = 0; $t < 100000; $t++){ $newArray = array(); $count = count($a1); for ($i = 0; $i < $count; $i++){ $newArray[] = $a1[$i]; $newArray[] = $a2[$i]; } } echo round(microtime(TRUE) - $start, 2); # 0.6
比較各反復で配列サイズを再計算するアプローチに比べて、この事前計算されたアプローチはかなりのパフォーマンスを提供します。改善:
$a1 = array(0, 1, 2); $a2 = array(3, 4, 5); $start = microtime(TRUE); for($t = 0; $t < 100000; $t++){ $newArray = array(); for ($i = 0; $i < count($a1); $i++){ $newArray[] = $a1[$i]; $newArray[] = $a2[$i]; } } echo round(microtime(TRUE) - $start, 2); # 0.85
ベンチマークはパフォーマンスのスナップショットを提供しますが、特定のパフォーマンス特性は特定のデータや環境によって異なる可能性があることに注意することが重要です。それにもかかわらず、この事前計算されたアプローチは、フラットなインデックス付き配列を交互に効率的にマージするための強固な基盤を提供します。
以上が2 つのフラットなインデックス付き配列を交互に効率的にマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。