Intereting Posts
Хранить и отображать результат MySQL в / из массива PHP PHP shell_exec ждет завершения скрипта? Повторение запросов mysqli сохранить var_dump в текстовый файл Значение динамического текстового поля не фиксируется при проверке – PHP json api graph call ничего не возвращает? Laravel – Valet 2. * возвращает только «он работает!» Импорт пространства имен и файлов в PHP isset и! empty, не проходя проверку чеком для загруженных файлов Закрывает ли PHP файл после того, как обработчик файлов собран из мусора? Использовать проверку подлинности Windows в качестве учетных данных для интрасети Использование длинного опроса ajax для обновления ответа на моей странице с внешнего API установить дату по умолчанию в datepicker только по вторникам и средам? Вызовите PHP из виртуального / пользовательского «веб-сервера» Можем ли мы отображать записи таблиц на нескольких страницах с помощью POST?

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;'); }