新手请问一下这个怎么计算
php吧
全部回复
仅看楼主
level 4
比如我要这样计算最后的结果
/是乘
谢谢大佬
2180+980+580=3740+ 480/3+930+ 1440+1400/2+1250+ 450+480 +1650+1650+1650+1400+530+1650/3+1250-500
2023年11月10日 13点11分 1
level 6
function calculateExpression($expression) {
$parts = explode("+", $expression);
$result = 0;
foreach ($parts as $part) {
if (strpos($part, "/") !== false) {
$subParts = explode("/", $part);
$subResult = 1;
foreach ($subParts as $subPart) {
$subResult *= floatval($subPart);
}
$result += $subResult;
} elseif (strpos($part, "-") !== false) {
$subParts = explode("-", $part);
$subResult = floatval($subParts[0]);
for ($i = 1; $i < count($subParts); $i++) {
$subResult -= floatval($subParts[$i]);
}
$result += $subResult;
} elseif (strpos($part, "=") === false) {
$result += floatval($part);
}
}
return $result;
}
$expression = "2180+980+580=3740+480/3+930+1440+1400/2+1250+450+480+1650+1650+1650+1400+530+1650/3+1250-500"; // 测试
$result = calculateExpression($expression);
echo $result; //输出结果为: 22190
2023年11月12日 04点11分 0
谢谢大佬 辛苦 [呵呵]
2023年11月12日 05点11分
level 11
看了半天没看明白说了个什么。是想实现输入一个表达式然后计算结果么?最简单的如下,源码和运行结果。
2023年11月11日 11点11分 3
谢谢 因为输入的是字符串 不能直接计算,还有等于=号
2023年11月12日 05点11分
对(用eval不安全,且你忽略了“等号要被抛弃”)
2023年11月12日 04点11分
level 4
已经解决了 上代码 请指正一下
2023年11月12日 05点11分 5
level 1
解析公式也有php扩展包 但是不完善。
也很容易产生bug,需要大量的数据测试。
如: 4 - -2
程序怎么判断这个2是 减2 还是负2?
你可以看这篇文章
base64: aHR0cHM6Ly9sZWFybmt1LmNvbS9hcnRpY2xlcy82OTA2NQ==
2023年11月13日 02点11分 6
1