muqsit / arithmexp
PHP的数学表达式解析和评估器
1.0.1
2024-07-12 18:15 UTC
Requires
- php: ^8.1
Requires (Dev)
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-12 18:36:34 UTC
README
arithmexp 是一个强大的PHP数学表达式解析和评估库,支持变量替换,常量声明,确定性和非确定性函数注册等。
提示
在 演示网站 上尝试arithmexp解析器!
使用composer安装
composer require muqsit/arithmexp
评估数学表达式
要评估数学表达式,创建一个 Parser 对象,并通过表达式字符串调用 Parser::parse() 来获取一个可重复使用的 Expression 对象。 Expression::evaluate() 返回表达式的值。
$parser = Parser::createDefault(); $expression = $parser->parse("2 + 3"); var_dump($expression->evaluate()); // int(5) $expression = $parser->parse("mt_rand()"); var_dump($expression->evaluate()); // int(1370501507) var_dump($expression->evaluate()); // int(1522981420)
在评估时,可以通过将 array<string, int|float|bool> 值传递给 Expression::evaluate() 来替换变量。
$expression = $parser->parse("x + y"); var_dump($expression->evaluate(["x" => 2, "y" => 3])); // int(5) var_dump($expression->evaluate(["x" => 1.5, "y" => 1.5])); // float(3) $expression = $parser->parse("a > b or c"); var_dump($expression->evaluate(["a" => 1, "b" => 2, "c" => true])); // bool(true)
评估的返回值类型与PHP的一致——int + int 返回一个 int 值,而 float + int|float 返回一个 float 值。 bool + bool 返回一个 int 值,而 int || int 返回一个 bool 值。
注意
请查看 Wiki 以获取文档注释和进一步的实现细节。