Heim >Backend-Entwicklung >PHP-Tutorial >Wie generiert man alle Permutationen eines Arrays 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!