Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 处理变量名不带$符号的字符串方程_Php_Formula_Equation - Fatal编程技术网

Php 处理变量名不带$符号的字符串方程

Php 处理变量名不带$符号的字符串方程,php,formula,equation,Php,Formula,Equation,我曾尝试使用搜索功能为我的用例找到解决方案,但我无法找到类似的情况。请帮我做这件事 我目前正在开发一个网页,从2个文本文件中读取名称和数字,并将其放入不同的数组中。 为了便于解释,我们假设: $namesarray = array("x","y"); $valuesarray = array("3","2"); 我还有一个单独的数组,其中包含从文本文件导入的公式,如下所示: $formulaname = array("data1","data2"); $formula = array("x+2

我曾尝试使用搜索功能为我的用例找到解决方案,但我无法找到类似的情况。请帮我做这件事

我目前正在开发一个网页,从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自动为公式x和y分别使用3和2,尽管公式没有任何$符号将x和y表示为变量

有可能出现这种情况吗?我已经研究了matheval和eval,但我不太确定它们是否可以用于我的情况


谢谢您的帮助。:)

您可以使用关联数组,例如:

$variables = array('x' => 3, 'y' => 2);
$data1 = $variables['x'] + 2;
$data2 = $variables['x'] + $variables['y'];
将创建具有正确值的
$x
$y
变量


虽然使用基本
$data
数组及其
x
y
键可能更好,但如果这是用户输入的公式,使用
eval()
肯定有风险

谢谢您的建议。然而,我遇到的问题是等式(即x+y)是从文本文件中读取的,因此它是字符串格式的。定义每个等式是不可行的,因为每个文本文件大约有200多个等式,而且根据用户的选择,我们有很多文本文件。@user2749222但是。。如果你想使用变量,你还需要定义所有变量。谢谢你的建议。这部分解决了我的问题,即名称和值是字符串而不是变量。但是,php有没有办法自动识别字符串公式之类的东西,比如x+y,并使用$x和$y的相应值,而不是将方程当作字符串来处理?再次感谢您的帮助:)看看公认的调车场算法答案,看起来确实很有趣,但我认为它仍然需要我在公式中加入变量,才能使用php$符号。如示例所示,$answer=$math->evaluate(“($a+3)*4”);,它可以用“a”作为变量计算方程,但前提是前面有一个美元符号。我手头的主要问题是公式没有美元符号,因为它们只是从文本文件中读取。是否有任何方法可以可靠地解析带有一些变量的公式,但前面没有$符号来表示它们为php变量?再次感谢您的时间。它只需要变量在公式中具有前面的
$
,只需对regexp进行简单的修改就可以消除这一点。。。。它至少应该为你的工作提供一个起点
$namesarray = array("x","y");
$valuesarray = array("3","2");
$data = array_combine(
    $namesarray,
    $valuesarray
);
extract($data);