Skip to content

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

License

Notifications You must be signed in to change notification settings

Muqsit/arithmexp

Repository files navigation

arithmexp

CI Latest Release

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<string, int|float|bool> 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

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy