Откуда берутся значения в генераторе

129
09 января 2021, 13:40

Читаю "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 - ОТКУДА БЕРУТСЯ НУЛИ?
} 

 ?>
Answer 1

Когда функция с if($i % 2) не возвращает число, она возвращает null. Дальше понятно.

Ну а так-то, лютый, дичайший говнокод. И эти люди пишут учебники.

READ ALSO
Нессколько mysql запросов в одном

Нессколько mysql запросов в одном

Подскажите, пожалуйсста, как вывести посты, которые пользователь добавил в избранное?

134
Запрет на переход на сайт с определенного домена

Запрет на переход на сайт с определенного домена

Сразу к делу - как запретить переход на сайт с другого домена?? Мне нужно избавится от нецелевого трафика

149
Передать значения из одной таблицы в другую left Join

Передать значения из одной таблицы в другую left Join

Подскажите пожалуйста, есть 2 таблицы с общим order_idВ первой таблице есть поле total, в это поле нужно передать значения поля quantity из второй таблицы

132
Отправка на сервер массива байтов

Отправка на сервер массива байтов

У меня есть метод, который отправляет на сервер данные:

160