Heim >Backend-Entwicklung >PHP-Tutorial >Wie generiert man alle Permutationen eines Arrays in PHP?

Wie generiert man alle Permutationen eines Arrays in PHP?

DDD
DDDOriginal
2024-12-09 06:14:14229Durchsuche

How to Generate all Permutations of an Array in PHP?

Permutationen eines Arrays in PHP generieren

In PHP umfasst das Generieren von Permutationen eines Arrays das Anordnen aller seiner Elemente in jeder möglichen Reihenfolge. Ausgehend von einem Array von Zeichenfolgen ['peter', 'paul', 'mary'] möchten wir beispielsweise Folgendes generieren Permutationen:

Peter-Paul-Maria
Peter-Maria-Paul
Paul-Peter-Maria
Paul-Maria-Peter
Maria-Peter-Paul
Maria- paul-peter

Um dieses Problem anzugehen, stellen wir zwei PHP vor Funktionen.

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

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

Diese Funktionen bieten zwei verschiedene Ansätze um Permutationen in PHP zu generieren, sodass Sie diejenige auswählen können, die Ihren Anforderungen am besten entspricht.

Das obige ist der detaillierte Inhalt vonWie generiert man alle Permutationen eines Arrays in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn