Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.
/ simple-math Public archive

Simple math expression evaluator.

License

Notifications You must be signed in to change notification settings

phpmyadmin/simple-math

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SimpleMath

Simple math expression evaluator.

Please note that in most cases it's better to use Symfony ExpressionLanguage Component instead. It performs better and provides more features.

This repository will probably not receive any updates in future.

Build Status codecov.io Scrutinizer Code Quality Packagist

Features

  • Supports basic arithmetic operations +, -, *, /, %
  • Supports parenthesis
  • Supports right associative ternary operator
  • Supports comparison operators ==, !=, >, <, >=, <=
  • Supports basic logical operations &&, ||
  • Supports variables (either PHP style $a or simple n)

The library was developed in order to be able to evaluate Gettext plural equations, but can be used for any mathematical calculations.

Installation

Please use Composer to install:

composer require phpmyadmin/simple-math

Documentation

The API documentation is available at https://develdocs.phpmyadmin.net/simple-math/.

Object API usage

// Create math object
$math = new SimpleMath\Math();

// Evaluate expression
$value = $math->evaluate('1 + 2');

// Evaluate expression with PHP style variable
$math->registerVariable('$a', 4);
$value = $math->evaluate('$a + 1');

// Evaluate expression with variable
$math->registerVariable('n', 4);
$value = $math->evaluate('n + 1');

// Calculate same expression with different values
$math = new SimpleMath\Math();

$math->parse('n + 1');

$math->registerVariable('n', 10);
$value = $math->run();

$math->registerVariable('n', 100);
$value = $math->run();

History

This library is based on Expressions.php gist. It adds some functions, performance improvements and ability to install using Composer.