为什么下面这个php程序算不出来数
<?php
error_reporting(0);
$sheji=$_POST['sheji'];
$yinshuafangshi=$_POST['yinshuafangshi'];
$chicun=$_POST['chicun'];
$zhizhang=$_POST['zhizhang'];
$yinshu=$_POST['yinshu'];
$houjiagong=$_POST['houjiagong'];
$jiaofushijian=$_POST['jiaofushijian'];
function h($sheji,$yinshuafangshi,$chicun,$zhizhang,$yinshu,$houjiagong,$jiaofushijian)
{
$a=0.04;
$b=$yeshu*0.5*$yinshu/$chicun;
$e=$c/500;
if (is_float($b))
{
++$b;
$c=(int)($b); //强制转换整型
}
else
{
$c=$b;
}
if ($c<500)
{
$d=1;
}
else
{
if (is_float($e)) //判断符点型
{
++$e;
$d=(int)($e); //强制转换整型
}
else
{
$d=$e;
}
}
if ($houjiagong=="1")
{
$z=($c*1.1*$zhizhang+$sheji+$yinshuafangshi+$yinshu*$a)*(1+$jiaofushijian);
}
if ($houjiagong=="2")
{
$z=($c*1.1*$zhizhang+$sheji+$yinshuafangshi+$d*2)*(1+$jiaofushijian);
}
if ($houjiagong=="1"&&$houjiagong=="2")
{
$z=($c*1.1*$zhizhang+$sheji+$yinshuafangshi+$d*2+$yinshu*$a)*(1+$jiaofushijian);
}
return $z;
}
echo '<table border=1 cellspacing=0 cellspading=0 align=center>';
echo '<tr>';
echo '<td>'.'<font color=black>'."印刷价格:".h($sheji,$yinshuafangshi,$chicun,$zhizhang,$yinshu,$houjiagong,$jiaofushijian).'</font>'.'</td>';
echo '</tr>';
echo '</table>';
?>
追问:
那个缺定义的我改了,但是为什么定义要写成那个样子呢?
修改成那样子,只是为了测试,目的是每个环节逐步查找可能出错的环节,也就是故障定位。
$sheji = 1; //$_POST['sheji'];
这样写就是直接定义数据,而排除了上个步骤(数据传递)的影响,这样就可以进一步的错误定位。
如果最终确定是数据传递环节出错了,那么就需要检查上个页面的代码,解决后,可以把这些再恢复过来。
$sheji = 1; //$_POST['sheji']; ==》 $sheji = $_POST['sheji'];
答案:由于业务逻辑不懂,所以运算不好修改,但如果仅仅是“php程序算不出来数”这样的问题,据我的测试,应该是你传递过来的参数有错误:
你可以把代码中相应代码修改如下:
$sheji = 1;//$_POST['sheji'];
$yinshuafangshi = 1;//$_POST['yinshuafangshi'];
$chicun = 1;//$_POST['chicun'];
$zhizhang = 1;//$_POST['zhizhang'];
$yinshu = 1;//$_POST['yinshu'];
$houjiagong = '1';//$_POST['houjiagong'];
$jiaofushijian = 1;//$_POST['jiaofushijian'];
运行结果为: 印刷价格:6.28
顺便提一句:
$b = $yeshu * 0.5 * $yinshu / $chicun;
这一句代码中的 $yeshu 我没有在代码中发现定义的地方。
上一个:三年的php程序员应该还要学点什么?
下一个:有PHP程序做的在线客服系统吗?收费的也行