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
Patricia Arquetteasal
2024-12-03 21:44:11327semak imbas

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/>';
    }
}

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

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

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);
  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>';
    }
  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>';
    }
  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>';
    }
  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]);

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!

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