Я считаю блоки переключателей ужасно многословными. Вы можете просто использовать математику в одной строке.
Если $i
нечетно, установите его как отрицательный коэффициент в уравнении. Другими словами, вы всегда добавляете положительное или отрицательное значение от $i
до $mainNumber
.
Код: ( Демо )
$mainNumber = 6;
$finalData = [];
for ($i = 1; $i <= $mainNumber; ++$i) {
$finalData[] = $mainNumber + (($i & 1 ? -1 : 1) * $i);
}
var_export($finalData);
Выход:
array (
0 => 5,
1 => 8,
2 => 3,
3 => 10,
4 => 1,
5 => 12,
)
Дополнительные примечания:
Блоки переключения наиболее полезны, когда вам нужно многократно оценивать одно и то же условие и сравнивать результат с предсказуемыми статическими единичными значениями. В этой ситуации нужно только проверить, является ли оператор плюсом или минусом - другими словами, если-иначе. Здесь нет смысла реализовывать регистр коммутатора.
Использование eval()
может быть безопасным для использования с достоверными значениями в этом вопросе, но когда речь идет о пользовательских данных, eval()
выращивает рога и выковывает вилы - общий совет почти всех профессиональных разработчиков состоит в том, чтобы Избегайте вызова функции.