Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menjana semua kemungkinan kombinasi dan pilih atur elemen dalam tatasusunan satu dimensi dalam PHP?

Bagaimanakah saya boleh menjana semua kemungkinan kombinasi dan pilih atur elemen dalam tatasusunan satu dimensi dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 19:45:30956semak imbas

How can I generate all possible combinations and permutations of elements within a one-dimensional array in PHP?

PHP: Cara Mendapatkan Semua Kemungkinan Gabungan Tatasusunan Satu Dimensi

Dalam artikel ini, kita akan menyelami kaedah untuk mendapatkan semula semua kemungkinan gabungan unsur dalam tatasusunan satu dimensi dalam PHP. Berbeza dengan penyelesaian lain, pendekatan ini memastikan kedua-dua gabungan dan pilih atur dipertimbangkan.

Pernyataan Masalah

Memandangkan tatasusunan rentetan atau nombor, matlamatnya adalah untuk menjana semua kemungkinan gabungan unsur, mengambil kira susunan yang berbeza. Sebagai contoh, 'Alpha Beta' dan 'Beta Alpha' ialah gabungan berbeza yang harus disertakan dalam output.

Penyelesaian PHP

Penyelesaian PHP yang disediakan menggunakan algoritma carian pertama mendalam rekursif:

<code class="php"><?php

$array = array('Alpha', 'Beta', 'Gamma', 'Sigma');

function depth_picker($arr, $temp_string, &amp;$collect) {
    if ($temp_string != "") 
        $collect []= $temp_string;

    for ($i=0, $iMax = sizeof($arr); $i < $iMax; $i++) {
        $arrcopy = $arr;
        $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element
        if (sizeof($arrcopy) > 0) {
            depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect);
        } else {
            $collect []= $temp_string. " " . $elem[0];
        }   
    }   
}

$collect = array();
depth_picker($array, "", $collect);
print_r($collect);

?></code>

Pecahan Penyelesaian

  • Fungsi depth_picker digunakan dengan tatasusunan awal, rentetan kosong dan rujukan tatasusunan kosong.
  • Ia secara rekursif gelung melalui tatasusunan, menambahkan setiap elemen pada penghujung rentetan hasil semasa.
  • Setiap kali rentetan temp mempunyai elemen, ia ditambahkan pada tatasusunan hasil.
  • Jika masih ada unsur yang tinggal dalam tatasusunan input, fungsi memanggil dirinya sendiri dengan tatasusunan dan rentetan temp yang dikemas kini.
  • Jika tiada lagi elemen yang tinggal, rentetan temp yang mengandungi gabungan lengkap ditambah pada tatasusunan pengumpulan.

Output

Kod yang disediakan menghasilkan output berikut, yang mengandungi semua gabungan dan pilih atur elemen dalam tatasusunan yang diberikan:

Array
(
    [0] =>  Alpha
    [1] =>  Alpha Beta
    [2] =>  Alpha Beta Gamma
    [3] =>  Alpha Beta Gamma Sigma
    [4] =>  Alpha Beta Sigma
    [5] =>  Alpha Beta Sigma Gamma
    [6] =>  Alpha Gamma
    [7] =>  Alpha Gamma Beta
    [8] =>  Alpha Gamma Beta Sigma
    [9] =>  Alpha Gamma Sigma
    [10] =>  Alpha Gamma Sigma Beta
    [11] =>  Alpha Sigma
    [12] =>  Alpha Sigma Beta
    [13] =>  Alpha Sigma Beta Gamma
    [14] =>  Alpha Sigma Gamma
    [15] =>  Alpha Sigma Gamma Beta
    [16] =>  Beta
    [17] =>  Beta Alpha
    [18] =>  Beta Alpha Gamma
    [19] =>  Beta Alpha Gamma Sigma
    [20] =>  Beta Alpha Sigma
    [21] =>  Beta Alpha Sigma Gamma
    [22] =>  Beta Gamma
    [23] =>  Beta Gamma Alpha
    [24] =>  Beta Gamma Alpha Sigma
    [25] =>  Beta Gamma Sigma
    [26] =>  Beta Gamma Sigma Alpha
    [27] =>  Beta Sigma
    [28] =>  Beta Sigma Alpha
    [29] =>  Beta Sigma Alpha Gamma
    [30] =>  Beta Sigma Gamma
    [31] =>  Beta Sigma Gamma Alpha
    [32] =>  Gamma
    [33] =>  Gamma Alpha
    [34] =>  Gamma Alpha Beta
    [35] =>  Gamma Alpha Beta Sigma
    [36] =>  Gamma Alpha Sigma
    [37] =>  Gamma Alpha Sigma Beta
    [38] =>  Gamma Beta
    [39] =>  Gamma Beta Alpha
    [40] =>  Gamma Beta Alpha Sigma
    [41] =>  Gamma Beta Sigma
    [42] =>  Gamma Beta Sigma Alpha
    [43] =>  Gamma Sigma
    [44] =>  Gamma Sigma Alpha
    [45] =>  Gamma Sigma Alpha Beta
    [46] =>  Gamma Sigma Beta
    [47] =>  Gamma Sigma Beta Alpha
    [48] =>  Sigma
    [49] =>  Sigma Alpha
    [50] =>  Sigma Alpha Beta
    [51] =>  Sigma Alpha Beta Gamma
    [52] =>  Sigma Alpha Gamma
    [53] =>  Sigma Alpha Gamma Beta
    [54] =>  Sigma Beta
    [55] =>  Sigma Beta Alpha
    [56] =>  Sigma Beta Alpha Gamma
    [57] =>  Sigma Beta Gamma
    [58] =>  Sigma Beta Gamma Alpha
    [59] =>  Sigma Gamma
    [60] =>  Sigma Gamma Alpha
    [61] =>  Sigma Gamma Alpha Beta
    [62] =>  Sigma Gamma Beta
    [63] =>  Sigma Gamma Beta Alpha
)

Atas ialah kandungan terperinci Bagaimanakah saya boleh menjana semua kemungkinan kombinasi dan pilih atur elemen dalam tatasusunan satu dimensi 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