muqsit/arithmexp

PHP的数学表达式解析和评估器

1.0.1 2024-07-12 18:15 UTC

README

CI Latest Release

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 以获取文档注释和进一步的实现细节。