Php 计算数组中非0的值的数目
我有一个数组,我试图计算数组中对象键“Value”不是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_
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通过演示查看我的答案。