rossonero585/php-expression

用于计算数学表达式的简单库

v2.0.1 2022-11-17 05:47 UTC

This package is auto-updated.

Last update: 2024-09-17 09:48:43 UTC


README

描述

此库允许使用数字、括号、数学符号(+,-,*,/)创建数学表达式,然后使用不同的参数执行它们。它还允许在表达式内部添加自定义函数以执行。它通过接收动态生成的字符串并通过 eval 函数运行它来工作。

示例用法

简单表达式

<?php

$expressionBuilder = new \Rossonero585\PhpExpression\ExpressionBuilder();

$expression = $expressionBuilder
    ->addArguments(['a', 'b'])
    ->create('a + b');

echo $expression->execute(["a" => 5, "b" => 5]);
// 10

echo $expression->execute(["a" => 2, "b" => 1]);
// 3

添加自定义函数

<?php

$expressionBuilder = new \Rossonero585\PhpExpression\ExpressionBuilder();

$expression = $expressionBuilder
    ->addFunction('convert', function ($value, $curr1, $curr2) {
        // do some stuff here
        return 61;
    })
    ->addArguments(["x", "curr1", "curr2"])
    ->create('1.1 * convert(x, curr1, curr2) + 100');

$result = $expression->execute([
    "x" => 100,
    "curr1" => "USD",
    "curr2" => "RUB"
]);