Передача шага цикла в генератор

192
12 октября 2018, 01:10
<?php
function Gener($start, $to, $step=1)
{
    for ($i=$start;$i<=$to;$i++)
    {
        $step = yield $i;
    }
}
$generator = Gener(1,100);
$generator->send(3);
foreach ($generator as $value) 
echo $value.'; ';
?>

Подскажите пожалуйста, как через send() передать значение шага в цикл, с которым он будет выводить значения

Answer 1

В данном случае у вас ничего не получится без асинхронности, т.к. сначала выполняется функция и результат присваивается переменной generator, а затем остальные манипуляции.

Вам нужно создать класс:

class Generator()
{
    private $step = 1;
    private $start = 1;
    private $to = 1;
    public function __construct($start, $to){
        $this->start = $start;
        $this->to = $to;
    }
    public function gener(){
        for ($i=$this->start;$i<=$this->to;$i+=$this->step)
        {
            $step = yield $i;
        }
    }
    public function send($step){
        $this->step = $step;
    }
}

Пример использования:

$gen = new Generator(1, 100);
$gen->send(3);
$gen->gener();
READ ALSO
Вставка email админа в форму wp

Вставка email админа в форму wp

Есть файл с обработкой формы phpНужно, чтобы email брался с админки, а не вписывался вручную в файл

175
Кастомные поля в WooCommerce WordPress

Кастомные поля в WooCommerce WordPress

Задача состоит в том чтобы добавить дополнительные поля в товары категории и на главную страницу

188
Вернуть часть строки кроме

Вернуть часть строки кроме

Всем добрый день! Как правильно составить регулярку, пробовал, но не получается то, что нужноЕсть много текста вида

187