Как заменить огромный массив генераторами 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;
}