本帖最后由 lazygc520 于 2011-04-28 12:12:51 编辑

解决方案 »

  1.   

    例中$avg的值为(int)(10+20+0+0)/4 ,结果为8.
    如果全部显示出来则变成:
    10 0 0 20 0 0 8
    有无方法得出结果是
    10 null null 20 0 0 8
      

  2.   

    PHP会根据运算自动将 null, "", 0进行转换的。
      

  3.   

    你这是全部代码还是部分代码?全部代码的话,我这边count($c)==4,没问题啊$e,$f保持了null如果你还有其他计算涉及$e,$f的话,应该在那些计算里面检查他们的类型
      

  4.   

    insert和update操作对此有无影响?
      

  5.   

    我估计你之前就出现了置零的计算例如把$_POST(举例而已)做转换的时候,然后赋值给$e,$f,可能已经把0赋值过去了
      

  6.   

    $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不明白你想说明什么
      

  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平均值)
      

  8.   

    form是怎样的如果type=text的话,不填值提交,不是null而是空字串是肯定的,变零的话,是不是js的问题?
      

  9.   


    <form name="formEditItem" method="post" action="hr_add.php?action=add">
      

  10.   

    一句话猜不出过程涉及多个步骤的话,逐个检查,正向或者逆向逆向的话检查var_dump($c)->var_dump($_POST)->submit前的值->...
    看看哪一个最初出现0的
      

  11.   

    var_dump($_POST[$var])
    在执行操作之前的值是NULL
      

  12.   

    你用什么显示全部的?$c?$a里还是null啊
      

  13.   

    提交之后null变成0结果如下:
    string(0) "" array(0) { } 
    0
      

  14.   

    所以提交前就要处理……把没有填的东西不提交
    因为提交的机制基本是字符串方式的,服务器端做判断转换,php是弱类型,可以不转换直接用,所以就出现类型不对
      

  15.   

    我比较少遇到需要提交null类型的情况,但是input type=text不填写应该可以提交空字串的,按这个思路修改测试
      

  16.   

    我想到一种办法,就是数据库的字段类型由int设置为string。但是做运算操作时如何将string类型中的值转化为int型?如果值为null,运算时怎么做处理?