Menggabungkan Tatasusunan Rata Bergantian
Memandangkan dua tatasusunan rata yang sama saiz, kami berusaha untuk menggabungkannya secara bergilir-gilir, mengekalkan susunan unsur dalam setiap tatasusunan. Output yang diingini menyerupai:
array(0, 3, 1, 4, 2, 5);
Sementara pendekatan kekerasan seperti berikut menyelesaikan tugas:
for (var $i = 0; $i < count($a1); $i++) { newArray[] = $a1[$i]; newArray[] = $b1[$i]; }
Kecekapan menjadi penting apabila melakukan operasi ini beribu-ribu kali.
Penyelesaian Asli
Penyelesaian asli yang dicadangkan melibatkan gelung tersuai yang berulang pada tatasusunan dan menambahkan elemennya secara bergilir-gilir pada tatasusunan baharu:
$count = count($a1); for ($i = 0; $i < $count; $i++) { $newArray[] = $a1[$i]; $newArray[] = $b1[$i]; }
Teknik ini terbukti lebih cekap, terutamanya apabila diulang berkali-kali, seperti yang ditunjukkan oleh ujian penanda aras di bawah:
$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[] = $b1[$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
Oleh itu, pra-pengiraan saiz tatasusunan memberikan lebih kurang 25% peningkatan prestasi, menjadikannya penyelesaian optimum untuk skala besar operasi.
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menggabungkan Dua Tatasusunan Rata Secara Cekap Bergantian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!