Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Muqsit/arithmexp

Repository files navigation

arithmexp

arithmexp is a powerful mathematical expression parser and evaluator library for PHP with support for variable substitution, constant declaration, deterministic and non-deterministic function registration, and more.

Tip

Try out arithmexp parser on the demo site!

Installation with composer

composer require muqsit/arithmexp

Evaluating a mathematical expression

To evaluate a mathematical expression, create a Parser and invoke Parser::parse() with an expression string to obtain a reusable Expression object. Expression::evaluate() returns the value of the expression.

$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)

Variables may be substituted at evaluation-time by passing an array value to 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)

The return value type of the evaluation is consistent with that of PHP's--int + int returns an int value, while float + int|float returns a float value. bool + bool returns an int value, while int || int returns a bool value.

Note

Check out the wiki for documentation notes and further implementation details.

About

A powerful mathematical expression parser and evaluator for PHP featuring variable substitution, user-defined constants, functions, deterministic functions, macros, operators, and compiler optimizations.

Topics

Resources

Readme

License

GPL-3.0 license

Stars

Watchers

Forks

Packages

Contributors

Languages