z / math-executor
简单的数学表达式计算器 - 基于 http://github.com/NeonXP/MathExecutor 的扩展
dev-master
2017-10-10 00:27 UTC
Requires (Dev)
- phpunit/phpunit: ^6.2
This package is not auto-updated.
Last update: 2024-09-28 19:09:32 UTC
README
简单的数学表达式计算器
通过 Composer 安装
所有安装说明在此:https://packagist.org.cn/packages/Z/math-executor
示例用法
require "vendor/autoload.php"; $calculator = new \Z\MathExecutor(); print $calculator->execute("1 + 2 * (2 - (4+10))^2 + sin(10)");
函数
默认函数
- sin
- cos
- tan
- asin
- acos
- atan
- min
- max
- avg
向执行器添加自定义函数
$executor->addFunction('abs', function($arg) { return abs($arg); }, 1);
运算符
默认运算符: + - * / ^
向执行器添加自定义运算符
MyNamespace/ModulusToken.php
<?php namespace MyNamespace; use Z\Classes\Token\AbstractOperator; class ModulusToken extends AbstractOperator { /** * Regex of this operator * @return string */ public static function getRegex() { return '\%'; } /** * Priority of this operator * @return int */ public function getPriority() { return 3; } /** * Associaion of this operator (self::LEFT_ASSOC or self::RIGHT_ASSOC) * @return string */ public function getAssociation() { return self::LEFT_ASSOC; } /** * Execution of this operator * @param InterfaceToken[] $stack Stack of tokens * @return TokenNumber Result of execution */ public function execute(&$stack) { $op2 = array_pop($stack); $op1 = array_pop($stack); $result = $op1->getValue() % $op2->getValue(); return new TokenNumber($result); } }
并将其添加到执行器中
$executor->addOperator('MyNamespace\ModulusToken');
变量
默认变量
$pi = 3.14159265359
$e = 2.71828182846
您可以向执行器添加自己的变量
$executor->setVars(array( 'var1' => 0.15, 'var2' => 0.22 )); $executor->execute("$var1 + $var2");