Ну да,мой код же не выводит данные значения которые больше нуля,хотя там все значения больше нуля,кроме самого нуля,и там явно не сказано что массив не подразумевает отрицательных чисел.Не вижу смысла продолжать полемику.
Никто не оспаривает работоспособность твоего алгоритма. Тебе сразу сказали что "четность такая-то и больше нуля" говорит об изначальной задаче больше чем "четность такая-то и логически истинное значение". В первом случае программист четко знает, что отбираются числа больше нуля. Во втором случае программисту нужно будет изучить декларацию значений. Продолжай говнокодить. Не вижу смысла продолжать полемику.
Если быть до конца честным, то у меня тоже алгоритмически не правильно, наполовину. Там так: PHP: if(!($k % 2) and $v > 0) elseif($k % 2 and $v > 0) Правильно так: PHP: if(($k % 2) == 0 and $v > 0) elseif(($k % 2) != 0 and $v > 0)
По правде говоря во всех вариантах реализации есть одна и таже ошибка. Мы то работаем с массивами... Кратность определяется в отношении ключей / индексов массива, нумерация которых начинается с нуля. Если это не учесть, 0-й элемент будет рассматриматься как кратный, хотя это не так. Что бы этого избежать, я бы написал примерно следующее: PHP: $arr = [2, 3, 1, 5, 6, 4, 2, 6, 3, 2]; $even = 1; $odd = ''; foreach ($arr as $key => $value) { if (($key != 0 && $key % 2 == 0) && ($value > 0)) { $even *= $arr[$key]; } else if (($key == 0 || $key % 2 > 0) && ($value > 0)) { $odd .= $arr[$key] . ' '; } По факту, можно еще больше упороться и сделать continue для элемента с индексом 0. Как не крути, такое условие - произведение только четных индексов, коим 0 не является.