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

Bagaimana untuk Menjana semua Permutasi Array dalam PHP?

DDD
DDDasal
2024-12-09 06:14:14226semak imbas

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);

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";
}

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!

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