Как работает этот PHP-код? (перестановки)

Я видел эту функцию (Получить все перестановки массива 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

0

Решение

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]