Generator in PHP – Info PHP
Introduction
This article explains Generators in PHP. Generators provide simple iterations without the overhead or complexity of implementing a category that implements the Iterator interface. A generator permits you to write code that uses foreach to iterate over a group of information without the necessity of creating an associated array in memory, that may cause you to exceed a memory limit, or that needs a substantial quantity of processing time to get. Instead, you’ll be able to write a generator function, that is the same as a traditional function, except that rather than returning once, a generator will yield persistently because it is intended to produce the values to be iterated over.
A generator function appearance rather like a standard function, except that rather than returning a value, a generator yields as several values because it must. When a generator function is called, it returns the associated object that will be iterated over. When you iterate over that object (for instance, via a foreach loop), PHP can determine the generator function each time it wants a value, then saves the state of the generator once the generator yields a value so it is often resumed once succeeding values is needed. A generator cannot return a value; doing so will result in a compile error.
function gen_count() {
for
yield $a;
}
}
$Gen_value= gen_count();
foreach ($Gen_valu as $v) {
echo “$v”.“
“;
}
?>
Yielding a key/value pair
‘EOF’
a;java;likes oops pattern
b;php;php is a open source
c;Zend;zend is framework
EOF;
function exchange_input($type) {
foreach (explode(“
“, $type) as $line) {
$field_name = explode(‘|’, $line);
$id = array_shift($field_name);
yield $id => $field_name;
}
}
foreach (exchange_input($type) as $id => $field_name) {
echo “$id:
“;
echo ” $field_name[0]
“;
echo ” $field_name[1]
“;
}
?>
Implement range generator
function oddrange($begining, $control, $Steps = 1) {
if
if
throw new LogicException(‘must be positive’);
}
for
yield $a;
}
} else {
if ($Steps >= 0) {
throw new LogicException(‘must be negative’);
}
for ($a = $beginning; $a >= $control; $a += $Steps) {
yield $a;
}
}
}
echo ‘odd no range(): ‘;
foreach (range(1, 9, 2) as $num) {
echo “$num “;
}
echo “
“;
echo ‘odd no for oddrange(): ‘;
foreach (oddrange(1, 9, 2) as $num) {
echo “$num”;
}
?>
Article Prepared by Ollala Corp