Читаю "PHP 7 в подлиннике" Д.Котерова. B главе 12 про генераторы упоминают. Решил попробовать комбинирование генераторов и не могу понять откуда берется итоговое значение при выводе на экран.
<?php
//функция генератор
function gen($arr, $func){
foreach($arr as $v){
yield $func($v);
}
}
$arr = [1,2,3,4,5,6];
//получаем только четные числа
$select = gen($arr,function($i){ if($i % 2 === 0) return $i; });
//foreach($select as $v) {
// echo "$v "; // 2 4 6 - все верно
//}
//возвращаем квадрат чисел массива, в качестве массива передаем результат работы генератора $select
$collect = gen($select,function($s){ return $s * $s; });
foreach($collect as $v) {
echo "$v "; // 0 4 0 16 0 36 - ОТКУДА БЕРУТСЯ НУЛИ?
}
?>
Когда функция с if($i % 2) не возвращает число, она возвращает null. Дальше понятно.
Ну а так-то, лютый, дичайший говнокод. И эти люди пишут учебники.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей