Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menjana semua Permutasi Array dalam PHP?

Bagaimana untuk Menjana semua Permutasi Array dalam PHP?

DDD
Lepaskan: 2024-12-09 06:14:14
asal
225 orang telah melayarinya

How to Generate all Permutations of an Array in PHP?

Menjana Pilihatur Tatasusunan dalam PHP

Dalam PHP, menjana pilihatur tatasusunan melibatkan penyusunan semua elemennya dalam setiap susunan yang mungkin. Sebagai contoh, diberikan tatasusunan rentetan ['peter', 'paul', 'mary'], kami berhasrat untuk menjana yang berikut pilih atur:

peter-paul-mary
peter-mary-paul
paul-peter-mary
paul-mary-peter
mary-peter-paul
mary- paul-peter

Untuk menangani masalah ini, kami membentangkan dua PHP fungsi.

Fungsi 1:

function pc_permute($items, $perms = array()) {
    if (empty($items)) { 
        echo join(' ', $perms) . "<br />";
    } else {
        for ($i = count($items) - 1; $i >= 0; --$i) {
             $newitems = $items;
             $newperms = $perms;
             list($foo) = array_splice($newitems, $i, 1);
             array_unshift($newperms, $foo);
             pc_permute($newitems, $newperms);
         }
    }
}

$arr = array('peter', 'paul', 'mary');

pc_permute($arr);
Salin selepas log masuk

Fungsi 2:

function pc_next_permutation($p, $size) {
    for ($i = $size - 1; $p[$i] >= $p[$i+1]; --$i) { }
    if ($i == -1) { return false; }
    for ($j = $size; $p[$j] <= $p[$i]; --$j) { }
    $tmp = $p[$i]; $p[$i] = $p[$j]; $p[$j] = $tmp;
    for (++$i, $j = $size; $i < $j; ++$i, --$j) {
         $tmp = $p[$i]; $p[$i] = $p[$j]; $p[$j] = $tmp;
    }
    return $p;
}

$set = split(' ', 'she sells seashells'); 
$size = count($set) - 1;
$perm = range(0, $size);
$j = 0;

do { 
     foreach ($perm as $i) { $perms[$j][] = $set[$i]; }
} while ($perm = pc_next_permutation($perm, $size) and ++$j);

foreach ($perms as $p) {
    print join(' ', $p) . "\n";
}
Salin selepas log masuk

Fungsi ini menyediakan dua pendekatan berbeza untuk menjana pilih atur dalam PHP, membolehkan anda memilih yang paling sesuai dengan keperluan anda.

Atas ialah kandungan terperinci Bagaimana untuk Menjana semua Permutasi Array dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan