Как в переменную поместить символ арифметической операции

Условия задачи. Функция, принимающая два параметра - массив чисел и строку, обозначающее арифметическое действие, которое нужно выполнить со всеми элементами массива. Функция должная выводить результат на экран.

Как переменную $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. Сейчас нет возможности набросать и проверить код. По ссылке есть примеры.

→ Ссылка