Как заменить огромный массив генераторами PHP

Обращаюсь к вам за помощью в преобразовании одного большого массива с помощью генераторов PHP. Ниже приведен мой код, который мне нужно переработать: я получаю набор результатов от вызова службы и назначаю все массиву:

foreach ($objects->result as $pointStdObject) {
  $pointStdObjects[] = $pointStdObject;
}

Этот фрагмент кода находится внутри цикла while, который запрашивает записи со смещением 1000. Проблема в том, что $pointStdObjects[] имеет тенденцию становиться очень огромной, и я получаю исключение PHP из памяти.

Позже мне снова нужно использовать этот же массив как:

foreach ($pointStdObjects as $pointStdObject) {
  $point = $this->pointFactory->createPointFromStdObject($pointStdObject);
  if (!$point) {
    continue;
  }
  $points[] = $point;
}
return $points;

Пожалуйста, подскажите, можем ли мы использовать генераторы PHP или дать здесь

1 ответ

function getStd()
{
   ///your code before that
    foreach ($objects->result as $pointStdObject) {
        yield $pointStdObject;
    }
}

function useStd()
{
    foreach (getStd() as $pointStdObject) {
        $point = $this->pointFactory->createPointFromStdObject($pointStdObject);
        if (!$point) {
            continue;
        }
        $points[] = $point;
    }
    return $points;
}
Другие вопросы по тегам