php - 是否可以直接使用存储在变量中的方程结果?

时间:2017-03-03 16:52:11

标签: php variables equations

例如

$var = '10/2';

我可以轻松地从中输出值5吗?

这样的事情:

$foo = ($var) + 5;

我希望$foo的值为10?

目前,我知道的最好方法是展开$var,然后将$var[0]除以$var[1]。有更快的方法吗?

另一种询问方式;有没有办法让系统对待' 10/2'作为方程而不是字符串?

3 个答案:

答案 0 :(得分:0)

可以使用像这样的解决方案

$foo = eval('return '.$var +5 .';');
print $foo;

eval需要一行代码..所以你可以构建一个有效的代码行

答案 1 :(得分:0)

eval()要么就地分配,要么return

eval("\$foo = ($var) + 5;");

$foo = eval("return ($var) + 5;");

答案 2 :(得分:0)

首先, EVAL是危险的,不应该被使用,除非你知道你在做什么!作为对此的补充,你不知道你在做什么。无论你作为一名程序员有多么有经验,当谈到eval时,只要假设你不知道自己在做什么。相信我,从长远来看,你的理智会感谢你。

至于你的问题,你基本上都在问如何编写方程解析器。编写一个可以处理所有有效输入情况(并可靠地识别无效输入)的完整文件比你最初想象的要大得多,所以如果你确实需要解析字符串方程式,那么最好找一个将为你做这件事的库,因为有可能是谁写了这个库,想到了很多你没有的东西,比如处理operator precedence以及括号如何修改它,如何用科学记数法传递字符串,等。

您的一条评论建议使用PHP Math Parser。我从来没有亲自使用它,但我知道作者的声誉足以让人相信它是一个可靠的图书馆。

如果您的用例总是像您的示例一样简单,那么您可以简单地拆分字符串并处理生成的片段。

$parts = explode ("/", $var);
$foo = $parts[0] / $parts[1];