我有一个简单的脚本,其中包含很多公式:
$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 .' + ' [...]
我有很多这些公式,所以我正在寻找一些调试它们的捷径。
答案 0 :(得分:3)
你应该能够用双引号包围你的公式,如下:
$formula = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)";
这将允许您回显$ formula,并且所有变量都应转换为它们的实际值。
至于没有复制/粘贴或插入引号的方法,没有。 PHP将评估=右侧的所有内容,以便$ formula以最终结果结束(没有引号)。如果你想要结果和“debug”输出,你可以这样做:
$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;
然后你会得到答案和调试输出。
答案 1 :(得分:2)
如果用引号包装等式,它将解析变量但不进行数学运算,如下所示:
$formula = "12 *( $C + ($D * $A) + $H ) + $B * ((($F+$J)*$M/$L)+(($G+$K)*$N/$L)+$E)";
如果您想使用字符串实际求解方程式,可以使用eval()
,如下所示:
$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非常强大,并且如果未定义变量,它将引发错误,因为等式没有意义。
答案 2 :(得分:2)
因此,当您从数学中获取数据时,构建一个字符串然后使用eval进行数学计算!
<?php
$Test = '7 * 9';
echo 'Eqau: '.$Test.'<br />'; // Eqau: 7 * 9
eval( "\$Test2 = $Test;" );
echo 'Res: '.$Test2; // Res: 63
?>
答案 3 :(得分:1)
我认为您应该能够将整个calc转换为字符串,然后变量将输出它们的值:
echo "foo is $foo"; // foo is foobar
不确定这是否正是您所寻找的。 p>