Я видел эту функцию (Получить все перестановки массива PHP?), но я не могу понять, как некоторые из этих кодов работают, может помочь объяснить? Кстати, я новичок в php.
Вот код:
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);
зачем использоватьlist($foo)
? Я пытался использовать массив, он не работает (я не понимаю, список)
А зачем использовать array_unshift($newperms, $foo);
? для чего? Извините, я действительно новичок в php T.T
List принимает массив и помещает его в переменную, например, если размер массива равен 3, то в функции list необходимо указать 3 переменные.
list($foo) = array_splice($newitems, $i, 1);
Что он сделал, так это взял $i
положить в $foo
и удалите его из массива.
Это также может выглядеть так —
$foo = array_splice($newitems, $i, 1)[0];
Но некоторые сочтут этот код сложнее для чтения.
Тогда array_unshift($newperms, $foo)
значит взять $foo
и поместите его в начале $newperms
массив. так что если массив выглядел как
Array ( [0] => a [1] => b [2] => c )
а также $foo
равняется d
массив после запуска функции будет выглядеть так:
Array ( [0] => d [1] => a [2] => b [3] => c )
Других решений пока нет …