Как в переменную поместить символ арифметической операции
Условия задачи. Функция, принимающая два параметра - массив чисел и строку, обозначающее арифметическое действие, которое нужно выполнить со всеми элементами массива. Функция должная выводить результат на экран.
Как переменную $math заставить работать как символ арифметического действия? При выводе на экран выводиться строка 1*1 и т.д.
$numbers = array(1,2,3,4,5);
$math = "*";
function square($numbers, $math){
for ($i = 0; $i < count($numbers); $i++){
echo $numbers[$i] . $math . $numbers[$i]."<br>";
}
}
square($numbers, $math);
Всё ж нужно было просто сделать арифметическую операцию со всеми элементами массива. То есть если массив 1,2,3 и строка + то результат 1+2+3=6
Решил вот таким способом. Правда на других форумах за eval на меня ругаются. Почему его не желательно использовать?
function items($numbers, $math) {
$result = $numbers[0];
if (in_array($math, array('*', '+', '/', '-', '%'))) {
for ($i = 1; $i < count($numbers); $i++) {
eval('$result = '.$result.$math.$numbers[$i].';');
}
echo implode($math, $numbers).'='.$result.'<br/>';
} else {
echo $math . ' - неизвестный оператор<br/>';
}
}
Ответы (1 шт):
Можно использовать eval. Сейчас нет возможности набросать и проверить код. По ссылке есть примеры.