在php中显示只满足这个条件的数组
display the array which meets only this condition in php
我有一个多维数组,我在里面循环以获得子数组:
所以我有一个子数组是这样的:
array (
0 =>
array (
'norm_value' => 2.5,
),
1 =>
array (
'norm_value' => 7.01,
),
2 =>
array (
'norm_value' => 0.0,
),
3 =>
array (
'norm_value' => 4.167,
),
4 =>
array (
'norm_value' => 0.0,
),
)
array (
0 =>
array (
'norm_value' => 0.0,
),
1 =>
array (
'norm_value' => 0.0,
),
2 =>
array (
'norm_value' => 0.0,
),
3 =>
array (
'norm_value' => 1.267,
),
4 =>
array (
'norm_value' => 0.0,
),
)
array (
0 =>
array (
'norm_value' => 0.0,
),
1 =>
array (
'norm_value' => 0.0,
),
2 =>
array (
'norm_value' => 0.0,
),
3 =>
array (
'norm_value' => 0.0,
),
4 =>
array (
'norm_value' => 0.0,
),
)
array (
0 =>
array (
'norm_value' => 3.54,
),
1 =>
array (
'norm_value' => 2.04,
),
2 =>
array (
'norm_value' => 0.673,
),
3 =>
array (
'norm_value' => 8.546,
),
4 =>
array (
'norm_value' => 0.0,
),
)
所以从上面的一组数组中,我想删除至少有一个非零值或所有零值的完整数组,从上面的情况我想删除完整的第二个数组(这只有一个非零值-零值)和第三个数组(全为零值)数组,其他两个(第一个和最后一个)数组将按原样显示。
我试过这段代码,但对我不起作用:
array_filter(array_column($array, 'norm_value'),function($n){
return ( count ($n > 0) <= 1) ;
});
如果我在这里遗漏任何内容或任何语法问题以解决此问题,请告诉我
谢谢提前。
我们将遍历每个子数组并计算有多少 norm_value
有 0.0
。如果计数与 size
或 size-1
匹配,那么我们将取消设置该索引。
$epsilon = 0.00001;
foreach($arr as $index => $subarray){
$count = 0;
foreach($subarray as $norm_data){
if(abs($norm_data['norm_value'] - 0.0) < $epsilon) $count++;
}
if($count === count($subarray) || $count == count($subarray)-1){
unset($arr[$index]);
}
}
print_r($arr);
我有一个多维数组,我在里面循环以获得子数组: 所以我有一个子数组是这样的:
array (
0 =>
array (
'norm_value' => 2.5,
),
1 =>
array (
'norm_value' => 7.01,
),
2 =>
array (
'norm_value' => 0.0,
),
3 =>
array (
'norm_value' => 4.167,
),
4 =>
array (
'norm_value' => 0.0,
),
)
array (
0 =>
array (
'norm_value' => 0.0,
),
1 =>
array (
'norm_value' => 0.0,
),
2 =>
array (
'norm_value' => 0.0,
),
3 =>
array (
'norm_value' => 1.267,
),
4 =>
array (
'norm_value' => 0.0,
),
)
array (
0 =>
array (
'norm_value' => 0.0,
),
1 =>
array (
'norm_value' => 0.0,
),
2 =>
array (
'norm_value' => 0.0,
),
3 =>
array (
'norm_value' => 0.0,
),
4 =>
array (
'norm_value' => 0.0,
),
)
array (
0 =>
array (
'norm_value' => 3.54,
),
1 =>
array (
'norm_value' => 2.04,
),
2 =>
array (
'norm_value' => 0.673,
),
3 =>
array (
'norm_value' => 8.546,
),
4 =>
array (
'norm_value' => 0.0,
),
)
所以从上面的一组数组中,我想删除至少有一个非零值或所有零值的完整数组,从上面的情况我想删除完整的第二个数组(这只有一个非零值-零值)和第三个数组(全为零值)数组,其他两个(第一个和最后一个)数组将按原样显示。
我试过这段代码,但对我不起作用:
array_filter(array_column($array, 'norm_value'),function($n){
return ( count ($n > 0) <= 1) ;
});
如果我在这里遗漏任何内容或任何语法问题以解决此问题,请告诉我 谢谢提前。
我们将遍历每个子数组并计算有多少 norm_value
有 0.0
。如果计数与 size
或 size-1
匹配,那么我们将取消设置该索引。
$epsilon = 0.00001;
foreach($arr as $index => $subarray){
$count = 0;
foreach($subarray as $norm_data){
if(abs($norm_data['norm_value'] - 0.0) < $epsilon) $count++;
}
if($count === count($subarray) || $count == count($subarray)-1){
unset($arr[$index]);
}
}
print_r($arr);