我有一个表单,可以从选择框和文本输入字段表中发送最多$_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_filterfunction 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"));
^^做了它
答案 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]);
}
}
希望这会对你有所帮助