Note that AppendIterator will segfault when iterating over an empty generator. Do not use AppendIterator in conjunction with generators.
https://3v4l.org/YC68k
https://bugs.php.net/bug.php?id=71436
(PHP 5 >= 5.1.0, PHP 7)
An Iterator that iterates over several iterators one after the other.
Note that AppendIterator will segfault when iterating over an empty generator. Do not use AppendIterator in conjunction with generators.
https://3v4l.org/YC68k
https://bugs.php.net/bug.php?id=71436
$append_iterator = new \AppendIterator();
$generator = ReportModel::come_generator();
foreach ($errors as $value)
{
//If first $value not empty, generator is not empty.
if(!empty($value))
{
$append_iterator->append($errors);
//break out of loop after appending.
break;
}
}
Updated code.
I could not find how to edit a note :/
Preventing segfault if empty generator.
<?php
$append_iterator = new \AppendIterator();
$generator = ReportModel::come_generator();
// Only works if first value in generator is not empty
// useful when yielding arrays
foreach ($append_iterator as $value)
{
//If first $value not empty, generator is not empty.
if(!empty($value))
{
$append_iterator->append($errors);
//break out of loop after appending.
break;
}
}
Updated code.
I could not find how to edit a note :/
Preventing segfault if empty generator.
<?php
$append_iterator = new \AppendIterator();
$generator = some_generator();
// Only works if first value in generator is not empty
// useful when yielding arrays
foreach ($generator as $value)
{
//If first $value not empty, generator is not empty.
if(!empty($value))
{
$append_iterator->append($generator );
//break out of loop after appending.
break;
}
}