227690008/formula-parser

解析和评估以字符串形式给出的数学公式。

v1.2.0 2022-11-24 03:27 UTC

This package is auto-updated.

Last update: 2024-09-24 07:19:09 UTC


README

测试及自用,增加部分函数,请勿使用。 Test and self use, small parts and functions are added, please do not use. From:denissimon/formula-parser

Formula Parser是一个用于解析和评估以字符串形式给出的数学公式的库。

支持

  • 运算符:+,-,*,/,^
  • 变量:x,y,z,a,b
  • 带有小数点'.'的数字
  • E表示法的数字
  • 常量:pi,e,Inf
  • 函数:sqrt,abs,sin,cos,tan,log,exp,floor,ceil
  • 无限嵌套括号
  • NaN(不是一个数字)

安装

需要PHP 7.3或更高版本。PHP

使用Composer安装

composer require 227690008/formula-parser

使用方法

require_once __DIR__ . '/vendor/autoload.php';

use FormulaParser\FormulaParser;

$formula = '3*x^2 - 4*y + 3/y';
$precision = 2; // Number of digits after the decimal point

try {
    $parser = new FormulaParser($formula, $precision);
    $parser->setVariables(['x' => -4, 'y' => 8]);
    $result = $parser->getResult(); // [0 => 'done', 1 => 16.38]
} catch (\Exception $e) {
    echo $e->getMessage(), "\n";
}

$precision参数默认为4,无需指定。

$parser = new FormulaParser('3+4*2/(1-5)^8');
$result = $parser->getResult(); // [0 => 'done', 1 => 3.0001]

初始化的对象$parser有以下方法

setValidVariables($array)覆盖默认有效变量。

setVariables($array)设置变量。

getResult()返回一个数组[0 => v1, 1 => v2],其中v1是'done'或'error',v2是计算结果或验证错误消息。

getFormula()返回构造函数传入的公式的文本。

更多使用示例可以在tests/FormulaParserTest.php中找到。

许可证

MIT许可证下授权。