Доходность не возвращает значение

Я пытаюсь адаптировать этот код:

function pc_permute($items, $perms = array( )) {
if (empty($items)) {
echo implode($perms); // yield (implode($perms));
}  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);
}
}
}

Для выхода, как вы видите, прокомментировал в той же строке. Но при этом не возвращается никаких значений.

Я звоню это с:

  foreach (pc_permute($a) as $y) {
echo $y;
}

Где $ a должно быть что-то вроде $a = [0,1,2];

С эхом работает, а с выходом нет. Что я делаю неправильно?

0

Решение

Ваш рекурсивный вызов игнорирует полученные значения.

Начиная с PHP 7 вы можете использовать генерация делегирования (yield from):

yield from pc_permute($newitems, $newperms);

В старых версиях просто напишите цикл, который выдает каждый результат.

0

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

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

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