Generator::current

(PHP 5 >= 5.5.0)

Generator::currentGet the yielded value

Description

public mixed Generator::current ( void )

Parameters

This function has no parameters.

Return Values

Returns the yielded value.

Коментарии

<?php
function gen_one_to_three() {
    for (
$i 1$i <= 3$i++) {
       
// Note that $i is preserved between yields.
       
yield $i;
    }
}

$generator gen_one_to_three();
foreach (
$generator as $value) {
    echo 
"regular : ".$value PHP_EOL;
    echo 
"With current function : ".$generator->current(),PHP_EOL;
}
?>
2018-01-31 00:48:59
http://php5.kiev.ua/manual/ru/generator.current.html
Автор:
current() advances untouched generator, same as next(), it makes the first step/iteration. the following calls will not.

non-yielded value will be NULL
2021-11-12 04:41:57
http://php5.kiev.ua/manual/ru/generator.current.html
I think what "gib-o-master" said is wrong.
Generator::current method does not advances "untouched generator".

let me give an example:

function y1()
{
    yield 1;
}

$g = y1();

if ($g->valid()) { //at this point, PHP outputs "valid"
    echo "valid\n"; 
}

echo "current v:" . $g->current() . "\n"; //at this point, PHP outputs current v:1

if ($g->valid()) { //at this point, PHP still outputs "valid"
    echo "valid\n"; 
} else {
     echo "not valid\n"; 
}

if Generator::current method advances generator, then above If statement should outputs "not valid"
2024-10-29 08:31:21
http://php5.kiev.ua/manual/ru/generator.current.html

    Поддержать сайт на родительском проекте КГБ