Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Cekap Menggelung Melalui Berbilang Tatasusunan Secara serentak dalam PHP?
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.
Untuk menggelung melalui berbilang tatasusunan serentak, anda boleh menggunakan pelbagai 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);
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>'; }
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>'; }
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>'; }
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!