求平均值,针对空值的处理 本帖最后由 lazygc520 于 2011-04-28 12:12:51 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 例中$avg的值为(int)(10+20+0+0)/4 ,结果为8.如果全部显示出来则变成:10 0 0 20 0 0 8有无方法得出结果是10 null null 20 0 0 8 PHP会根据运算自动将 null, "", 0进行转换的。 你这是全部代码还是部分代码?全部代码的话,我这边count($c)==4,没问题啊$e,$f保持了null如果你还有其他计算涉及$e,$f的话,应该在那些计算里面检查他们的类型 insert和update操作对此有无影响? 我估计你之前就出现了置零的计算例如把$_POST(举例而已)做转换的时候,然后赋值给$e,$f,可能已经把0赋值过去了 $a=array(10,$e,$f,20,0,0);var_dump($a);$b=array(null,'');$c=array_diff($a,$b);var_dump($c);$avg = (int)(array_sum($c)/count($c));echo $avg;var_dump($a):array(6) { [0]=> int(10) [1]=> NULL [2]=> NULL [3]=> int(20) [4]=> int(0) [5]=> int(0)}var_dump($c):array(4) { [0]=> int(10) [3]=> int(20) [4]=> int(0) [5]=> int(0)}echo $avg:7不明白你想说明什么 $a=array($_POST['1月'],$_POST['2月'],$_POST['3月'],$_POST['4月'],$_POST['5月'],$_POST['6月'],$_POST['7月'],$_POST['8月'],$_POST['9月'],$_POST['10月'], $_POST['11月'],$_POST['12月']);$b=array(null,'');$c=array_diff($a,$b);var_dump($c);$avg = (int)(array_sum($c)/count($c));echo $avg;像这种情况是否已经赋过值了?填入的值:0 0 30 30 50 null null null null null null null我这里的计算结果是:0 0 30 30 50 0 0 0 0 0 0 0 22<--($avg平均值) form是怎样的如果type=text的话,不填值提交,不是null而是空字串是肯定的,变零的话,是不是js的问题? <form name="formEditItem" method="post" action="hr_add.php?action=add"> 一句话猜不出过程涉及多个步骤的话,逐个检查,正向或者逆向逆向的话检查var_dump($c)->var_dump($_POST)->submit前的值->...看看哪一个最初出现0的 var_dump($_POST[$var])在执行操作之前的值是NULL 你用什么显示全部的?$c?$a里还是null啊 提交之后null变成0结果如下:string(0) "" array(0) { } 0 所以提交前就要处理……把没有填的东西不提交因为提交的机制基本是字符串方式的,服务器端做判断转换,php是弱类型,可以不转换直接用,所以就出现类型不对 我比较少遇到需要提交null类型的情况,但是input type=text不填写应该可以提交空字串的,按这个思路修改测试 我想到一种办法,就是数据库的字段类型由int设置为string。但是做运算操作时如何将string类型中的值转化为int型?如果值为null,运算时怎么做处理? 这些码大概是什么字符串? php 选择即时显示 求助 session_start() 莫名其妙....... php 如何 接受 多个同一名称的 无素值 php不能打开mysql的个别表 请提供给小弟一个smartytemplate的简单作品.不要求过多的使用类。刚刚看,不懂。多谢啦! 求解 【高手通道】【5000 分 问题求解 5000 分】【高手通道】 怎么能做到 一个未登录的用户,一天只能查看一天信息记录? 我都快愤怒了,这儿都是些混饭吃的吗? Php如何catch网站的响应数? 新手幼稚问题
如果全部显示出来则变成:
10 0 0 20 0 0 8
有无方法得出结果是
10 null null 20 0 0 8
var_dump($a);
$b=array(null,'');
$c=array_diff($a,$b);
var_dump($c);
$avg = (int)(array_sum($c)/count($c));
echo $avg;var_dump($a):
array(6) {
[0]=>
int(10)
[1]=>
NULL
[2]=>
NULL
[3]=>
int(20)
[4]=>
int(0)
[5]=>
int(0)
}
var_dump($c):
array(4) {
[0]=>
int(10)
[3]=>
int(20)
[4]=>
int(0)
[5]=>
int(0)
}
echo $avg:
7不明白你想说明什么
$b=array(null,'');
$c=array_diff($a,$b);
var_dump($c);
$avg = (int)(array_sum($c)/count($c));
echo $avg;像这种情况是否已经赋过值了?填入的值:
0 0 30 30 50 null null null null null null null
我这里的计算结果是:
0 0 30 30 50 0 0 0 0 0 0 0 22<--($avg平均值)
<form name="formEditItem" method="post" action="hr_add.php?action=add">
看看哪一个最初出现0的
在执行操作之前的值是NULL
string(0) "" array(0) { }
0
因为提交的机制基本是字符串方式的,服务器端做判断转换,php是弱类型,可以不转换直接用,所以就出现类型不对