Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menjana Semua Gabungan Unik Panjang Tertentu daripada Tatasusunan PHP?

Bagaimanakah Saya Boleh Menjana Semua Gabungan Unik Panjang Tertentu daripada Tatasusunan PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 05:31:16956semak imbas

How Can I Generate All Unique Combinations of a Specific Length from a PHP Array?

Kombinasi Tatasusunan PHP

Dalam PHP, mencipta gabungan elemen daripada tatasusunan ialah tugas biasa. Artikel ini meneroka penyelesaian untuk menjana gabungan panjang tertentu daripada tatasusunan tertentu, memastikan susunan elemen diabaikan.

Untuk menangani masalah ini, pendekatan berulang digunakan, dilaksanakan melalui kelas Gabungan. Kelas ini berfungsi sebagai lelaran, membenarkan traversal dan mendapatkan semula kombinasi yang cekap.

Kaedah __construct memulakan kelas dengan menerima tatasusunan atau rentetan s dan panjang gabungan yang diingini k. Ia memulakan pembolehubah dalaman dan menetapkan kedudukan awal kepada sifar.

Kaedah _next bertanggungjawab untuk maju ke gabungan seterusnya. Ia melelang melalui elemen dalam susunan terbalik, menambah kiraan dan mengemas kini gabungan dengan sewajarnya.

Kaedah kunci, semasa, seterusnya, gulung semula dan sah memenuhi keperluan antara muka Iterator, membolehkan lelaran lancar ke atas gabungan.

Contoh penggunaan disediakan, menunjukkan penciptaan objek Gabungan daripada pelbagai nombor:

$array = [1,2,3,4,5,6,7];
$combinations = new Combinations($array, 5);

Lelaran pada objek $combinations akan menghasilkan setiap kombinasi unik sebagai rentetan atau tatasusunan, bergantung pada jenis input:

foreach($combinations as $combination) {
    echo $combination . ' ';
}

Output:

12345 12346 12347 12356 12357 12367 12456 12457 12467 12567 13456 13457 13467 13567 14567 23456 23457 23467 23567 24567 34567

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Semua Gabungan Unik Panjang Tertentu daripada Tatasusunan 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