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!