PHP – арифметические операции с использованием строк как операторов

У меня есть строковая переменная, $operation , которая может иметь значения, такие как + или - и две целые переменные $initial и $unit .

Таким образом, чтобы отразить результат арифметической операции между ними

Я должен использовать что-то вроде

  if($operation == '+') echo ($initial + $unit); if($operation == '-') echo ($initial - $unit); 

Есть ли способ, которым я могу это сделать без IF?

обман с математикой:

 echo $initial + (($operation == '-') ? -1 : 1) * $unit; 

только с помощью добавления, но обманывая с умножением на отрицательный … 🙂

Вы можете использовать карту, т.е.

 function add($a, $b) { return $a + $b; } function sub($a, $b) { return $a - $b; } $operations = array('+' => 'add', '-' => 'sub'); $operations[$operation]($initial, $unit); 
 echo ($operation == '+') ? $initial + $unit : $initial - $unit; 

С eval .

Но удостоверьтесь, что вы выполняете валидации белого перед подачей чего-либо для оценки.

 if(in_array($operation, array('+', '-'))){ eval('echo $initial '.$operation.' $unit;'); }