WedX - журнал о программировании и компьютерных науках

Проблема с динамическим математическим оператором PHP

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

// allow custom variance from user input
if (isset($request->custom_variance)) {
    $variance_amount = floatval($request->custom_variance);
    ($variance_amount < 0) ? $operator = " < " : $operator = " > ";
} else {
    // set default
    $variance_amount = floatval(-50);
    $operator = " < ";
}

Затем я использую эти переменные в операторе if, который я выгрузил здесь, чтобы показать вывод:

 var_dump((floatval($value_one) - floatval($value_two)).$operator.$variance_amount);
// returns "-51.35 < -50"

Если я жестко закодирую значения, я получу это (это работает так, как я хочу логическое значение)

 var_dump((floatval($value_one) - floatval($value_two)) < -50);
// returns true

Я кое-что читал здесь об этом, и кажется, что он не работает, поскольку мой оператор интерпретируется как строка, но я хотел бы по возможности избегать использования функции eval().

Какие-либо предложения?

26.06.2017

Ответы:


1

Вы можете попробовать использовать eval() с правильным строковым выражением, подобным этому, с ключевым словом return и ;, а затем использовать if. > Состояние по вашему желанию.

$result="return ((floatval($value_one)- floatval($value_two)).$operator.$variance_amount);";
  // returns true instead of "-51.35 < -50"
  if(eval($result)){
    // do what ever you want to do
   }
26.06.2017
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]