Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何打印PHP公式进行分析?_Php - Fatal编程技术网

如何打印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是危险的,但你可以毫无问题地保护它;)