计算数组值> 0

时间:2012-09-19 10:50:17

标签: php

我有一个表单,可以从选择框和文本输入字段表中发送最多$_POST['ore']的整数。有问题的数组是:

print_r($_POST)
//returns
Array
(
[ore] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 0
        [3] => 0
        [4] => 0
        [5] => 0
        [6] => 0
        [7] => 0
        [8] => 0
        [9] => 0
    )
....

这就是它变得越大,它就是一个小应用程序。 10个选择框,10个输入框。表单本身和其他功能都很有效。

但是,在提交时,数据将被发送到另一个页面,该页面处理收集的信息,并基于该数组的while生成一个带有count循环的新表。但是,我只想计算大于0的值,因为零在技术上是空的。

我尝试了多个功能,例子,比特件,并尝试了愚蠢的运气,但没有积极的结果。我已经得到了一些部分工作,但大部分时间他们都排除了最后一行。

我目前有size = count($_POST['ore']); - 但是这会创建一个包含10行(应该如此)的表,并使用while代码的最后一个循环填充表中的其余行。功能性,但令人烦恼,而不是我想做的事。

我尝试过使用

的array_filter
function nonzero($var){
   return ($var > 0); }
$size = array_filter($_POST['ore'], "nonzero");

没有运气。

我在多个地方尝试了if(isset($_POST['ore'])),但由于数组中有一个0值,所以它在技术上设置了。

那么,我如何计算,或过滤然后计算$ _POST ['ore']数组值以去除0并仅计算或返回大于0的键?

我的敲击键盘,我提前感谢你。


编辑 - 找到答案谢谢大家早上的反馈

function nonzero($var){
   return ($var > 0); }
$size = count(array_filter($_POST['ore'], "nonzero"));

^^做了它

4 个答案:

答案 0 :(得分:1)

你试过了:

$size = array_filter($_POST['ore], "nonzero");

在发布此帖子或从代码中复制时,这是一个错字吗?如果是这样,撇号就会丢失。此外,$ size将是返回的数组,其中所有值都大于0,因此对于您需要的大小:

$size = count(array_filter($_POST['ore'], "nonzero"));

答案 1 :(得分:1)

如果数组中没有负面元素,则实际上不需要定义过滤器函数,array_filter默认过滤掉零:

$size = count(array_filter($_POST['ore']));

答案 2 :(得分:0)

你的功能应该正常工作,唯一需要知道的是函数返回一个数组:

$_POST['ore'][] = 1;
$_POST['ore'][] = 2;
$_POST['ore'][] = 0;
$_POST['ore'][] = 0;

function nonzero($var){ 
    return ($var > 0); } 

$arr = array_filter($_POST['ore'], "nonzero"); 
echo count($arr); // this returns 2

答案 3 :(得分:0)

Hello只是尝试取消设置值为0的数组的索引

foreach($array as $array_key=>$array_item)
{
  if($array[$array_key] == 0)
  {
    unset($array[$array_key]);
  }

}

希望这会对你有所帮助