Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mencari semua subset tatasusunan dalam PHP

Bagaimana untuk mencari semua subset tatasusunan dalam PHP

PHPz
PHPzasal
2023-04-20 10:12:57794semak imbas

PHP ialah bahasa skrip yang sangat berkuasa yang menyediakan banyak fungsi yang mudah Di antaranya, fungsi array_subset boleh digunakan untuk mendapatkan semua subset tatasusunan. Di bawah kami akan menerangkan cara menggunakannya.

Apakah subset tatasusunan?

Dalam matematik, subset bagi set ialah subset daripadanya yang mengandungi beberapa atau semua unsur dalam set asal. Contohnya, diberikan set {1, 2, 3}, subsetnya termasuk {1, 2, 3}, {1, 2}, {1, 3}, {2, 3} dan {1}, {2} dan {3}.

Dalam PHP, subset tatasusunan merujuk kepada mana-mana subarray berterusan tatasusunan, termasuk beberapa atau semua elemen dalam tatasusunan asal.

Cara menggunakan fungsi array_subset

Fungsi array_subset boleh digunakan untuk mendapatkan semua subset tatasusunan. Sintaks fungsi ini adalah seperti berikut:

array array_subset ( array $array , int $size [, bool $preserve_keys = FALSE ] )

Penerangan parameter:

  • $array: tatasusunan subset yang akan diperolehi.
  • $size: Bilangan elemen dalam subset.
  • $preserve_keys: Sama ada untuk mengekalkan nama kunci tatasusunan asal, lalainya adalah FALSE.

Nilai pulangan: Mengembalikan tatasusunan yang mewakili semua subset $array.

Berikut ialah contoh:

$nums = [1, 2, 3, 4];
$subsets = array_subset($nums, 3);

print_r($subsets);

Output adalah seperti berikut:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 4
        )

    [2] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 4
        )

    [3] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 4
        )

)

Dalam contoh di atas, kami telah menentukan tatasusunan $nums dengan 4 elemen , dan kemudian gunakan fungsi array_subset untuk mendapatkan semua subsetnya, setiap subset mengandungi 3 elemen.

Seperti yang dapat dilihat daripada output, fungsi array_subset mengembalikan tatasusunan dua dimensi, di mana setiap subbarray mewakili subset $nums.

Contoh aplikasi

Dalam pembangunan sebenar, anda boleh menggunakan fungsi array_subset untuk mendapatkan semua subset tatasusunan dengan cepat dan memproses subset ini selanjutnya. Berikut ialah contoh mudah: Katakan kita mempunyai tatasusunan yang mengandungi beberapa nombor, dan kini kita perlu mencari semua kombinasi yang mana jumlahnya ialah nilai yang ditentukan.

Berikut ialah kod pelaksanaan:

function find_combinations($nums, $target) {
    $count = count($nums);
    $result = array();
    for ($i = 1; $i < $count; $i++) {
        $subsets = array_subset($nums, $i);
        foreach ($subsets as $subset) {
            if (array_sum($subset) == $target) {
                $result[] = $subset;
            }
        }
    }
    return $result;
}

// 示例:
$nums = [1, 3, 5, 7, 9];
$target = 8;
$combinations = find_combinations($nums, $target);

print_r($combinations);

Output adalah seperti berikut:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 7
        )

    [1] => Array
        (
            [0] => 3
            [1] => 5
        )

)

Dalam contoh di atas, kami mentakrifkan fungsi yang dipanggil find_combinations, yang Menerima tatasusunan $nums dan nilai sasaran $target, dan mengembalikan tatasusunan yang mengandungi semua subarray yang jumlahnya ialah $target.

Dalam fungsi, kita mula-mula menggelungkan kepanjangan subset, dari 1 hingga $count - 1. Kemudian gunakan fungsi array_subset untuk mendapatkan semua subset panjang $i dalam $nums dan melintasinya Jika jumlah elemen subset adalah sama dengan $target, tambahkannya pada tatasusunan hasil.

Seperti yang dapat dilihat daripada contoh di atas, fungsi array_subset boleh digunakan untuk mendapatkan semua subset tatasusunan dengan cepat, yang memudahkan penyelesaian beberapa masalah algoritma dan juga menunjukkan sepenuhnya fleksibiliti bahasa PHP.

Atas ialah kandungan terperinci Bagaimana untuk mencari semua subset 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