在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_value0.0。如果计数与 sizesize-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);

演示: https://3v4l.org/futQ8