PHP - арифметические операции с использованием строк в качестве операторов - PullRequest
1 голос
/ 18 января 2011

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

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 18 января 2011

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

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

только с использованием сложения, но измена с умножением на минус ...:)

3 голосов
/ 18 января 2011

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

function add($a, $b) { return $a + $b; }
function sub($a, $b) { return $a - $b; }

$operations = array('+' => 'add', '-' => 'sub');

$operations[$operation]($initial, $unit);
1 голос
/ 18 января 2011
echo ($operation == '+') ? $initial + $unit : $initial - $unit;
0 голосов
/ 18 января 2011

С eval .

Но убедитесь, что вы проверили свой белый список, прежде чем вводить что-либо для eval.

if(in_array($operation, array('+', '-'))){
    eval('echo $initial '.$operation.' $unit;');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...