【问题标题】:Count Array Values > 0计数数组值 > 0
【发布时间】:2012-09-19 10:50:17
【问题描述】:

我有一个表单,它可以从选择框和文本输入字段的表中发送不超过$_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个输入框。表单本身和其他功能都很好用。

但是,在提交时,数据被发送到另一个页面,该页面处理收集的信息并基于该数组的count 生成一个带有while 循环的新表。但是,我只想计算大于 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"));

^^ 做到了

【问题讨论】:

  • 请用有意义的标题编辑您的问题。

标签: php


【解决方案1】:

你试过了:

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

这是发这篇文章时的错字还是你从代码中复制的?如果是这样,则缺少撇号。此外,$size 将是所有大于 0 的值的返回数组,因此对于您需要的大小:

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

【讨论】:

  • 帖子中的错字,我会改正的
  • 我刚刚更新了这篇文章,您在使用 array_filter 时遇到了什么问题?我刚刚发布的应该可以工作。
【解决方案2】:

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

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

【讨论】:

  • 我也会尝试,不,所有积极因素。
【解决方案3】:

您的函数应该可以正常工作,唯一需要知道的是该函数正在返回一个数组,所以:

$_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

【讨论】:

    【解决方案4】:

    您好,请尝试取消设置值为 0 的数组的索引

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

    }

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2021-04-18
      • 1970-01-01
      • 2017-05-23
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      • 2019-12-03
      • 2012-02-18
      相关资源
      最近更新 更多