У меня есть строковая переменная, $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;'); }