适用于QRSpeed的数学计算功能-PHP开源

xiwangly

活捉一只老RBQ
管理成员
2020-02-27
95
72
18
QRSpeed-第6课时-第六节-网络词库的测试用API(更多使用方法也看这里)中我开放了这个接口,详细的使用说明也在那里,然后有许多人来问我要源码,于是我就在这里开源了(本开源的代码可能不与测试API的代码同步,即本代码功能可能落后于测试API)。

GitHub开源:https://github.com/xiwangly2/math-API

PHP版本需>7.0

其实要实现这些数学计算很简单,直接引用PHP自带的Math函数,详见PHP 5 Math 函数-菜鸟教程
然后用get方式传入变量,然后基础运算就自建函数,部分数学运算涉及到数值转换套上去即可。稍微复杂一点的就是要把这些集合在一起,并且不同的函数要用不同的判断(终于写完了)。
1588116365713.png
——图片来自QRSpeed-第6课时-第六节-网络词库
QRSpeed词库目前还不支持浮点数的加减运算,也不支持高级运算,所以要依赖于其他的接口等等。

代码如下:
PHP:
<?php
/**
由xiwangly编写,用于访问该接口快速运算一些值,请保留著作权,还在不断改进中……
教程:https://www.lolichan.vip/threads/qrspeed-6.53/
http://域名/math.php?x=x的值&y=y的值&z=z的值&m=计算方式
*/
$x=$_GET["x"];
$y=$_GET["y"];
$z=$_GET["z"];
$m=$_GET["m"];
/**
if($x == "π")
{
    $x="M_PI";
}
else if($y == "π")
{
    $y="M_PI";
}
else if($z == "π")
{
    $z="M_PI";
}
*/
function sa($x,$y)
{
    $total=$x + $y;
    return $total;
}
function ss($x,$y)
{
    $total=$x - $y;
    return $total;
}
function sm($x,$y)
{
    $total=$x * $y;
    return $total;
}
function sd($x,$y)
{
    $total=$x / $y;
    return $total;
}
function sr($x,$y)
{
    $total=$x % $y;
    return $total;
}
function s($x,$y)
{
    $total=$x . $y;
    return $total;
}
if($x == ""&$y == ""&$z == ""&$m == "")
{
    $url="https://www.lolichan.vip/threads/qrspeed-6.53/";
    header("Location: $url");
}
else if($m == "a")
{
    echo sa($x,$y);
}
else if($m == "s")
{
    echo ss($x,$y);
}
else if($m == "m")
{
    echo sm($x,$y);
}
else if($m == "d")
{
    echo sd($x,$y);
}
else if($m == "r")
{
    echo sr($x,$y);
}
else if($m == "ss")
{
/**
    if($z == "")
    {
        echo s($x,$y);
    }
    else
    {*/
        $and_sss=$x . $y . $z;
        echo $and_sss;
//    }
}
else if($m == "pow")
{
    echo pow($x,$y);
}
else if($m == "abs")
{
    echo abs($x);
}
else if($m == "acos")
{
    echo acos($x);
}
else if($m == "acosh")
{
    echo acosh($x);
}
else if($m == "asin")
{
    echo asin($x);
}
else if($m == "asinh")
{
    echo asinh($x);
}
else if($m == "atan")
{
    echo atan($x);
}
else if($m == "atan2")
{
    echo atan2($x,$y);
}
else if($m == "atanh")
{
    echo atanh($x);
}
else if($m == "base")
{
    echo base_convert($x,$y,$z);
}
else if($m == "bindec")
{
    echo bindec($x);
}
else if($m == "ceil")
{
    echo ceil($x);
}
else if($m == "cos")
{
    $x=floatval($x);
    echo cos($x);
}
else if($m == "cosh")
{
    $x=floatval($x);
    echo cosh($x);
}
else if($m == "decbin")
{
    echo decbin($x);
}
else if($m == "dechex")
{
    echo dechex($x);
}
else if($m == "decoct")
{
    echo decoct($x);
}
else if($m == "deg2rad")
{
    echo deg2rad($x);
}
else if($m == "exp")
{
    echo exp($x);
}
else if($m == "expm1")
{
    echo expm1($x);
}
else if($m == "floor")
{
    echo floor($x);
}
else if($m == "fmod")
{
    echo fmod($x,$y);
}
else if($m == "getrandmax")
{
    echo rand($x,getrandmax());
}
else if($m == "hexdec")
{
    echo hexdec($x);
}
else if($m == "hypot")
{
    echo hypot($x,$y);
}
else if($m == "finite")
{
    echo is_finite($x);
}
else if($m == "infinite")
{
    echo is_infinite($x);
}
else if($m == "nan")
{
    echo is_nan($x);
}
else if($m == "lcg")
{
    echo lcg_value();
}
else if($m == "log"&$y == "")
{
    echo log($x);
}
else if($m == "log")
{
    echo log($x,$y);
}
else if($m == "log10")
{
    echo log10($x);
}
else if($m == "log1p")
{
    echo log1p($x);
}
else if($m == "max"&$z == "")
{
    echo max($x,$y);
}
else if($m == "max")
{
    echo max($x,$y,$z);
}
else if($m == "min"&$z == "")
{
    echo min($x,$y);
}
else if($m == "min")
{
    echo min($x,$y,$z);
}
else if($m == "mtgetrandmax")
{
    echo mt_rand($x,mt_getrandmax());
}
else if($m == "mtrand")
{
    echo mt_rand($x,$y);
}
else if($m == "mtsrand")
{
    echo mt_srand($x);
}
else if($m == "octdec")
{
    echo octdec($x);
}
else if($m == "pi")
{
    echo (pi());
}
else if($m == "rad2deg")
{
    echo rad2deg($x);
}
else if($m == "rand")
{
    echo rand($x,$y);
}
else if($m == "round")
{
    echo round($x);
}
else if($m == "sin")
{
    $x=floatval($x);
    echo sin($x);
}
else if($m == "sinh")
{
    $x=floatval($x);
    echo sinh($x);
}
else if($m == "sqrt")
{
    echo sqrt($x);
}
else if($m == "srand")
{
    echo srand($x);
}
else if($m == "tan")
{
    $x=floatval($x);
    echo tan($x);
}
else if($m == "tanh")
{
    $x=floatval($x);
    echo tanh($x);
}
else
{
    echo "未知的表达";
}
?>
同样的,本源码也会以附件形式展现,见下面的附件(math.zip)(旧版本已丢失)。

(本文继承关联其他教程的协议。你们可以拿去用,但是不可以纯粹的搬砖修改,可以超链接分享,但是不允许小幅度二改并上传,引用这些东西去做其他的事情是可以的,还是那句老话:授人以鱼,不如授之以渔
2020/4/29更新:(fixed版本修复了部分运算返回无结果的问题,见附件"math_fixed.zip")
2020/4/30更新:(见附件"math_2020_4_30.zip",累...现在已经不只是数学运算了,...)
2020/5/2更新:(见附件"math_2020_5_2.zip")
2020/5/7更新:(见附件"math_2020_5_7.zip")
1588234436854.png
1588414613480.png
1588829650483.png
拿走记得说一声啊……
 

附件

最后编辑:
  • 支持
反馈: 萌新_冷天