<?php function gen1() { return 42; (yield 24); } $gen = gen1(); // Calling getReturn() directly here is okay due to auto-priming var_dump($gen->getReturn()); function gen2() { (yield 24); return 42; } $gen = gen2(); var_dump($gen->current()); $gen->next(); var_dump($gen->getReturn()); // & for generators specifies by-reference yield, not return // so it's okay to return a literal function &gen3() { $var = 24; (yield $var); return 42; } $gen = gen3(); var_dump($gen->current()); $gen->next(); var_dump($gen->getReturn());
<?php function gen1() { return [4, 5, 6]; } function gen2() { yield from gen1(); } $g = gen2(); foreach ($g as $val) { var_dump($val); }
function gen() { (yield 1); (yield 2); yield from gen2(); }
<?php function gen() { yield; return; } function gen2() { yield; return null; } function gen3() { return; yield; } function gen4() { return; yield; } var_dump(gen()); var_dump(gen2()); var_dump(gen3()); var_dump(gen4());
<?php define("ALWAYSWRITE", FALSE); //always write eveng with the message "please check back shortly" define("OUTPUTFILEPATH", "./data.html"); //the absolute path of the file to be written $IdLeague = "926"; $data = array(); $title = ""; $ret = gen($IdLeague, $data, $title); //echo $title; //print_r($data); gen2($data, $title); function gen($IdLeague, &$data, &$mainTitle) { $ret = false; $mainTitle = ""; $data = array(); $xml_string = file_get_contents("./odds.xml"); $matches = array(); preg_match('/<league IdLeague="' . $IdLeague . '"[^>]*>(.*?)<\\/league>/', $xml_string, $matches); if (count($matches) <= 0) { return $ret; } $league = $matches[1]; $leagueObj = simplexml_load_string($matches[0]); $mainTitle = (string) $leagueObj["Description"]; $sections = preg_split("/<banner[^>]*>/", $league); // split by sections if (count($sections) <= 0) { return $ret;
<?php function gen1() { (yield 'a'); (yield 'aa'); } function gen2() { (yield 'b'); (yield 'bb'); } $it = new MultipleIterator(); $it->attachIterator(gen1()); $it->attachIterator(gen2()); foreach ($it as $values) { var_dump($values); }
<?php function gen1() { (yield 1 => 2); (yield 2 => 3); } var_dump(gen1()->valid()); var_dump(gen1()->current()); var_dump(gen1()->key()); var_dump(gen1()->next()); function gen2() { if (false) { (yield 1 => 2); } } var_dump(gen2()->valid()); var_dump(gen2()->current()); var_dump(gen2()->key()); try { var_dump(gen2()->next()); } catch (Exception $e) { var_dump($e->getMessage()); }
function gen() { (yield 1); (yield 2); return yield from gen2(); }
<?php if (false) { function gen1() { (yield 1); } } if (true) { function gen1() { (yield 2); } function gen2() { (yield 3); } } if (false) { function gen2() { (yield 4); } } foreach (gen1() as $x) { var_dump($x); } foreach (gen2() as $x) { var_dump($x); }