Php 计算数组中非0的值的数目

Php 计算数组中非0的值的数目,php,arrays,Php,Arrays,我有一个数组,我试图计算数组中对象键“Value”不是0的对象的数量 array ( 0 => array ( 'name' => 'item[110189]', 'value' => '0', 'primary_key' => '110189', ), 1 => array ( 'name' => 'item[110190]', 'value' => '50', 'primary_

我有一个数组,我试图计算数组中对象键“Value”不是0的对象的数量

array (
  0 => 
  array (
    'name' => 'item[110189]',
    'value' => '0',
    'primary_key' => '110189',
  ),
  1 => 
  array (
    'name' => 'item[110190]',
    'value' => '50',
    'primary_key' => '110190',
  ),
  2 => 
  array (
    'name' => 'item[110191]',
    'value' => '0',
    'primary_key' => '110191',
  ),
  3 => 
  array (
    'name' => 'item[110192]',
    'value' => '0',
    'primary_key' => '110192',
  ),
)
我尝试了以下方法:

$input_items = array_filter($request->items, function($item){

            $count = 0;

            foreach($item as $i){
                if(! $i['value'] == 0){
                    $count = $count + 1;
                }
            }

            return $count;
        }); // it will return an array

        return $input_items;

我得到一个错误,说对象“Value”无效,老实说,这是我所期望的一半。

您可以使用
array\u reduce

print array_reduce($request->items, function($carry ,$item){
   if($item['value'] != 0){
      $carry++;
   }
   return $carry;
  },0);

您可以使用
array\u reduce

print array_reduce($request->items, function($carry ,$item){
   if($item['value'] != 0){
      $carry++;
   }
   return $carry;
  },0);
更改为:

$input_items = array_filter($arr, function ($item) {
    return ($item['value'] != 0);
});
完整代码

<?php
$arr = array (
  0 => 
  array (
    'name' => 'item[110189]',
    'value' => '0',
    'primary_key' => '110189',
  ),
  1 => 
  array (
    'name' => 'item[110190]',
    'value' => '50',
    'primary_key' => '110190',
  ),
  2 => 
  array (
    'name' => 'item[110191]',
    'value' => '0',
    'primary_key' => '110191',
  ),
  3 => 
  array (
    'name' => 'item[110192]',
    'value' => '0',
    'primary_key' => '110192',
  ),
);
$input_items = array_filter($arr, function ($item) {
    return ($item['value'] != 0);
});

print_r($input_items);
演示:

将其更改为:

$input_items = array_filter($arr, function ($item) {
    return ($item['value'] != 0);
});
完整代码

<?php
$arr = array (
  0 => 
  array (
    'name' => 'item[110189]',
    'value' => '0',
    'primary_key' => '110189',
  ),
  1 => 
  array (
    'name' => 'item[110190]',
    'value' => '50',
    'primary_key' => '110190',
  ),
  2 => 
  array (
    'name' => 'item[110191]',
    'value' => '0',
    'primary_key' => '110191',
  ),
  3 => 
  array (
    'name' => 'item[110192]',
    'value' => '0',
    'primary_key' => '110192',
  ),
);
$input_items = array_filter($arr, function ($item) {
    return ($item['value'] != 0);
});

print_r($input_items);

演示:

您能用阵列的
var\u导出版本更新您的问题吗?
$i['value']==0
$item['value']!=0
并且在回调中
$item['value']
不再需要循环,删除foreach@PraveenKumar谢谢-漂亮的tipThanks@justonUndermillion这似乎有用,我会保存它的@Dev.Wol通过演示查看我的答案。你能用数组的
var\u导出版本更新你的问题吗?
$i['value']==0
$item['value']!=0
并且在回调中
$item['value']
不再需要循环,删除foreach@PraveenKumar谢谢-漂亮的tipThanks@justonUndermillion这似乎有用,我会保存它的@Dev.Wol通过演示查看我的答案。