如何打印PHP公式进行分析?
我有一个简单的脚本,里面有很多公式,比如:如何打印PHP公式进行分析?,php,Php,我有一个简单的脚本,里面有很多公式,比如: $formula = 12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E); $formula = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)"; 有没有简单的方法输出值来调试方程?比如: 12 * ( 15 (44 * 11) + 33) + 3 * [..
$formula = 12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E);
$formula = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)";
有没有简单的方法输出值来调试方程?比如:
12 * ( 15 (44 * 11) + 33) + 3 * [...]
或者我必须用通常的方式:
echo "12" . '* ('. $C .' + ' [...]
我有很多这样的公式,所以我正在寻找一些快捷方式来调试它们。您应该能够用双引号将公式括起来,如下所示:
$formula = 12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E);
$formula = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)";
这将允许您回显$formula,所有变量都应转换为它们的实际值
至于在不复制/粘贴或插入引号的情况下实现这一点的方法,没有。PHP将对=右侧的所有内容进行求值,以便$formula(不带引号)只得到最终结果。如果需要结果和“调试”输出,可以执行以下操作:
$formula = 12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E);
$formulaDebug = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)";
echo $formulaDebug . " = " . $formula . PHP_EOL;
然后,您将得到答案和调试输出。如果将方程式括在引号中,它将解析变量,但不会进行数学运算,如下所示:
$formula = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)";
$formula = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)";
echo $formula; \\ Equation with vars filled in.
eval( "echo $formula;"); \\ Solved equation
如果要使用字符串实际求解方程,可以使用eval()
,如下所示:
$formula = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)";
$formula = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)";
echo $formula; \\ Equation with vars filled in.
eval( "echo $formula;"); \\ Solved equation
请注意,eval功能非常强大,如果未定义变量,它将抛出一个错误,因为该等式没有意义。我认为您应该能够将整个计算转换为字符串,然后变量将输出其值:
echo“foo是$foo”;//foo是foobar
不确定这是否正是您想要的。因此,当您从数学中获取数据时,构建一个字符串,然后使用eval进行计算
<?php
$Test = '7 * 9';
echo 'Eqau: '.$Test.'<br />'; // Eqau: 7 * 9
eval( "\$Test2 = $Test;" );
echo 'Res: '.$Test2; // Res: 63
?>
这就是为什么我们不这样写长公式的原因。数学没有捷径……Owww。伙计,你太棒了,我现在觉得自己太蠢了。。。如果这不明显,我不知道是什么…请确保使用双引号。单引号将在不发生变量替换的情况下显示公式。这看起来非常整洁和清晰。只要确保数学是所有得到的eval()
:ed@micke是的,当面对不好的事情时,eval是危险的,但你可以毫无问题地保护它;)