如何打印PHP方程进行分析?

时间:2012-03-26 21:33:31

标签: php

我有一个简单的脚本,其中包含很多公式:

$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 .' + ' [...]

我有很多这些公式,所以我正在寻找一些调试它们的捷径。

4 个答案:

答案 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

不确定这是否正是您所寻找的。