Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menggabungkan Dua Tatasusunan Berindeks Rata Secara Cekap Bergantian?

Bagaimanakah Saya Boleh Menggabungkan Dua Tatasusunan Berindeks Rata Secara Cekap Bergantian?

DDD
DDDasal
2024-12-03 10:40:10687semak imbas

How Can I Efficiently Merge Two Flat Indexed Arrays Alternately?

Menggabungkan Tatasusunan Berindeks Rata Secara Bergantian

Menggabungkan dua tatasusunan secara berselang-seli, menolak nilai ke dalam hasil satu persatu daripada menggabungkannya, adalah keperluan biasa dalam pemprosesan dan manipulasi data. Dalam kes ini, kami mempunyai dua tatasusunan diindeks rata, $a1 dan $a2, dan kami ingin menggabungkannya ke dalam tatasusunan baharu, $newArray, supaya nilainya dijalin seperti berikut: [0, 3, 1, 4, 2 , 5].

Walaupun mungkin untuk mencapai ini menggunakan gelung manual seperti yang dicadangkan, terdapat pendekatan asli yang lebih cekap yang menawarkan kelebihan prestasi. Kod berikut mempamerkan pendekatan prakiraan:

$count = count($a1);
for ($i = 0; $i < $count; $i++) {
    $newArray[] = $a1[$i];
    $newArray[] = $a2[$i];
}

Dalam kod ini, kita mula-mula menentukan kiraan unsur dalam $a1 (dengan andaian $a1 dan $a2 mempunyai saiz yang sama). Kemudian, kami menggunakan gelung untuk mengulangi elemen dan menambahkannya secara bergantian pada $newArray.

Penanda aras prestasi, seperti yang ditunjukkan di bawah, mengesahkan kecekapan pendekatan ini:

$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

Berbanding kepada pendekatan yang menceritakan saiz tatasusunan dalam setiap lelaran, pendekatan prapengiraan ini menawarkan prestasi yang besar penambahbaikan:

$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

Walaupun penanda aras memberikan gambaran prestasi, adalah penting untuk ambil perhatian bahawa ciri prestasi tertentu mungkin berbeza-beza bergantung pada data dan persekitaran tertentu. Namun begitu, pendekatan prapengiraan ini menawarkan asas yang kukuh untuk menggabungkan tatasusunan diindeks rata dengan cekap secara bergantian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Dua Tatasusunan Berindeks Rata Secara Cekap Bergantian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn