Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengira Produk Cartesan Berbilang Tatasusunan dalam PHP?

Bagaimana untuk Mengira Produk Cartesan Berbilang Tatasusunan dalam PHP?

Barbara Streisand
Barbara Streisandasal
2024-11-14 12:15:02877semak imbas

How to Calculate the Cartesian Product of Multiple Arrays in PHP?

Produk Cartesian Pelbagai Tatasusunan: Penyelesaian Komprehensif

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!

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