Уравнение строки процесса с именами переменных без знака $

0

Я попытался использовать функцию поиска для решения моего варианта использования, но мне не удалось найти подобную ситуацию, например, мою. Пожалуйста, любезно помогите мне в этом.

В настоящее время я разрабатываю веб-страницу, которая читает из 2 текстовых файлов с именами и номерами внутри в разные массивы. Для удобства объяснения, скажем:

$namesarray = array("x","y");
$valuesarray = array("3","2");

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

$formulaname = array("data1","data2");
$formula = array("x+2","x+y");

Таким образом, в математических выражениях формулы могут быть записаны как:

data1 = x+2
data2 = x+y

То, что я хотел бы сделать, - это делать такие вычисления, когда я вызываю data2:

$data2 = $x + $y;

Я хотел бы, чтобы php автоматически использовал 3 и 2 для x и y соответственно для формулы, хотя формула не имеет никакого знака $, чтобы обозначать x и y в качестве переменных.

Будет ли такая ситуация возможна? Я заглянул в matheval и eval, но я не уверен, могут ли они использоваться для моей ситуации.

Спасибо за любую помощь. :)

Теги:
formula
equation

2 ответа

0
Лучший ответ
$namesarray = array("x","y");
$valuesarray = array("3","2");
$data = array_combine(
    $namesarray,
    $valuesarray
);
extract($data);

Создает ваши переменные $x и $y с правильными значениями;

Хотя использование базового массива $data с его x и y ключами, вероятно, лучше, и использование eval() определенно опасно, если это введенные пользователем формулы

  • 0
    Спасибо за ваше предложение. Это решает часть моей проблемы, когда имена и значения являются строками, а не переменными.
  • 0
    Однако есть ли способ для php автоматически распознавать что-то вроде строковых формул, таких как x + y, и использовать соответствующие значения $ x и $ y, вместо того, чтобы рассматривать уравнение как просто строку? Еще раз спасибо за вашу помощь :)
Показать ещё 3 комментария
0

Вы можете использовать ассоциативные массивы, fe:

$variables = array('x' => 3, 'y' => 2);
$data1 = $variables['x'] + 2;
$data2 = $variables['x'] + $variables['y'];
  • 0
    Спасибо за ваше предложение. Однако проблема, с которой я сталкиваюсь, заключается в том, что уравнение (то есть x + y) читается из текстового файла, поэтому оно имеет формат строки. Определение каждого уравнения неосуществимо, поскольку для каждого текстового файла существует более 200 уравнений, и у нас есть много текстовых файлов в зависимости от выбора, сделанного пользователем.
  • 0
    @ user2749222 но .. если вы хотите использовать переменные - вам также нужно определить их все

Ещё вопросы

Сообщество Overcoder
Наверх
Меню