Apabila berurusan dengan berbilang tatasusunan, mungkin timbul keperluan untuk menjana jadual yang mengandungi setiap kemungkinan gabungan elemen daripada ini tatasusunan, sambil mengelakkan pengulangan. Operasi matematik ini dikenali sebagai produk Cartesian.
Untuk menangani cabaran ini dalam PHP, pertimbangkan untuk menggunakan fungsi berikut:
function array_cartesian() { $_ = func_get_args(); if(count($_) == 0) return array(array()); $a = array_shift($_); $c = call_user_func_array(__FUNCTION__, $_); $r = array(); foreach($a as $v) foreach($c as $p) $r[] = array_merge(array($v), $p); return $r; } $cross = array_cartesian( array('apples', 'pears', 'oranges'), array('steve', 'bob') ); print_r($cross);
Fungsi ini mengambil argumen panjang berubah-ubah, setiap satu mewakili tatasusunan . Ia secara rekursif mengira produk Cartesian dengan memilih elemen daripada tatasusunan pertama dan menggabungkannya dengan semua kemungkinan produk Cartesian bagi tatasusunan yang tinggal.
Hasilnya ialah tatasusunan bersarang yang mengandungi setiap gabungan unik elemen daripada tatasusunan input. Dalam contoh yang diberikan, produk Cartesian dua tatasusunan akan menghasilkan:
Array 0 Array 1 apples steve apples bob pears steve pears bob
Penyelesaian ini bukan sahaja berkesan untuk tatasusunan dengan dua dimensi tetapi juga boleh dilanjutkan untuk mengendalikan sebarang bilangan tatasusunan. Ia menyediakan cara ringkas dan elegan untuk menyelesaikan masalah produk Cartesian dalam PHP.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Produk Cartesan Berbilang Tatasusunan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!