Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Cekap Menggelung Melalui Berbilang Tatasusunan Secara serentak dalam PHP?

Bagaimana untuk Cekap Menggelung Melalui Berbilang Tatasusunan Secara serentak dalam PHP?

Patricia Arquette
Lepaskan: 2024-12-03 21:44:11
asal
331 orang telah melayarinya

How to Efficiently Loop Through Multiple Arrays Simultaneously in PHP?

Cara Menggelung melalui Dua Tatasusunan Sekaligus: Panduan Terperinci

Masalah: Isu Gelung Bersarang

Apabila menggelung melalui berbilang tatasusunan serentak, perkara biasa Masalahnya ialah keputusan mungkin tidak betul kerana struktur gelung yang tidak sesuai. Pertimbangkan contoh berikut:

$data1 = ['a: 1', 'a: 2', 'a: 3', 'a: 4', 'a: 5'];
$data2 = ['b: 1', 'b: 2', 'b: 3', 'b: 4', 'b: 5'];

foreach ($data1 as $item1) {
    foreach ($data2 as $item2) {
        echo $item1 . '<br/>';
        echo $item2 . '<br/>';
        echo '<br/><br/>';
    }
}
Salin selepas log masuk

Kod di atas menggunakan gelung foreach bersarang, yang menghasilkan output berikut:

a: 1
b: 1

a: 1
b: 2

a: 1
b: 3

a: 1
b: 4

a: 1
b: 5
Salin selepas log masuk

Walau bagaimanapun, output yang dijangkakan ialah:

a: 1
b: 1

a: 2
b: 2

a: 3
b: 3

a: 4
b: 4

a: 5
b: 5
Salin selepas log masuk

Masalahnya ialah struktur gelung bersarang menyebabkan setiap elemen $data1 digelung dengan setiap elemen $data2. Untuk mencapai output yang diingini, kita perlu menggelung melalui kedua-dua tatasusunan secara serentak.

Penyelesaian

Untuk menggelung melalui berbilang tatasusunan serentak, anda boleh menggunakan pelbagai kaedah:

  1. Kaedah

    array_map() (PHP >=5.3):

    Kaedah ini membolehkan anda menghantar berbilang tatasusunan dan fungsi panggil balik untuk memproses elemennya.

    array_map(function($v1, $v2){
        echo $v1 . '<br>';
        echo $v2 . '<br>';
    }, $data1, $data2);
    Salin selepas log masuk
  2. Kaedah MultipleIterator (PHP >=5.3):

    Kaedah ini mencipta berbilang lelaran objek yang boleh digunakan untuk mengulangi berbilang tatasusunan serentak.

    $it = new MultipleIterator();
    $it->attachIterator(new ArrayIterator($data1));
    $it->attachIterator(new ArrayIterator($data2));
    foreach ($it as $a) {
        echo $a[0] . '<br>';
        echo $a[1] . '<br>';
    }
    Salin selepas log masuk
  3. untuk Gelung dengan Pembilang (PHP >=4.3):

    Kaedah ini menggunakan gelung for dengan pemboleh ubah pembilang untuk lelaran melalui kedua-duanya tatasusunan.

    $keysOne = array_keys($data1);
    $keysTwo = array_keys($data2);
    
    $min = min(count($data1), count($data2));
    
    for ($i = 0; $i < $min; $i++) {
        echo $data1[$keysOne[$i]] . '<br>';
        echo $data2[$keysTwo[$i]] . '<br>';
    }
    Salin selepas log masuk
  4. array_combine() Kaedah (PHP >=5.0):

    Kaedah ini boleh digunakan jika tatasusunan mempunyai nilai unik. Ia menggabungkan tatasusunan ke dalam tatasusunan tunggal di mana elemen $data1 adalah kunci dan elemen $data2 ialah nilai.

    foreach (array_combine($data1, $data2) as $d1 => $d2) {
        echo $d1 . '<br>';
        echo $d2 . '<br>';
    }
    Salin selepas log masuk
  5. call_user_func_array() Kaedah ( PHP >=5.6):

    Kaedah ini membolehkan anda menghantar berbilang tatasusunan ke fungsi panggil balik.

    $func = function (...$numbers) {
        foreach ($numbers as $v)
            echo $v . '<br>';
        echo '<br>';
    };
    call_user_func_array("array_map", [$func, $data1, $data2]);
    Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Cekap Menggelung Melalui Berbilang Tatasusunan Secara serentak dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan