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

Bagaimana untuk Cekap Berulang Melalui Dua Tatasusunan Secara serentak dalam PHP?

Patricia Arquette
Patricia Arquetteasal
2024-12-01 08:26:10937semak imbas

How to Efficiently Iterate Through Two Arrays Simultaneously in PHP?

Bagaimana untuk Menggelung Melalui Dua Tatasusunan Sekali gus?

Untuk menggelung secara serentak melalui dua tatasusunan, kod yang disediakan dalam soalan menggunakan gelung foreach bersarang. Walau bagaimanapun, pendekatan ini tidak cekap kerana ia menghasilkan keputusan yang salah.

Berikut adalah penyelesaian yang berkesan untuk mengatasi cabaran ini:

1. Kaedah array_map() (PHP >= 5.3)

Kaedah ini membenarkan gelung serentak melalui berbilang tatasusunan.

array_map(function($v1, $v2){
    echo $v1 . "<br>";
    echo $v2 . "<br><br>";
}, $data1, $data2);

2. Kaedah MultipleIterator (PHP >= 5.3)

Buat MultipleIterator dan lampirkan ArrayIterators untuk tatasusunan yang dikehendaki.

$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><br>";
}

3. untuk Kaedah Gelung (PHP >= 4.3)

Gunakan gelung for dengan pembilang untuk mengakses elemen yang sepadan daripada kedua-dua 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><br>";
}

4. Kaedah array_combine() (PHP >= 5.0)

Jika tatasusunan mempunyai nilai unik, gunakan array_combine() untuk mencipta tatasusunan tunggal dengan elemen daripada tatasusunan pertama sebagai kunci dan yang daripada tatasusunan kedua sebagai nilai .

foreach(array_combine($data1, $data2) as $d1 => $d2) {
    echo $d1 . "<br>";
    echo $d2 . "<br><br>";
}

5. Kaedah call_user_func_array() (PHP >= 5.6)

Untuk menggelungkan nombor tatasusunan yang tidak diketahui, gabungkan array_map() dengan call_user_func_array().

$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 Berulang Melalui Dua 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