2015-08-03 67 views
0

我有这样一个数组:102, 97, 101, 1, 107, 95, 555。 我需要排除数字,这与其他数字非常不同。所以阵列应该是:102, 97, 101, 107, 95。 我如何在PHP中做到这一点?PHP:过滤太高,数字太低

+4

1)你有没有尝试过的东西2)什么意思/定义*彼此非常不同*? – Rizier123

+0

什么是标准过高或过低? –

+0

到目前为止您尝试了哪些代码? –

回答

1
function getAverageArray($min, array $arr){ 
    $arr2 = array($arr[0]); 
    foreach(array_slice($arr,1) as $val) 
     if ($val - $arr[0] < $min && $arr[0] - $val < $min) 
      $arr2[] = $val; 
    return $arr2; 
} 

//the minimum difference necessary 
$min = 90; 
$arr = array(102, 97, 101, 1, 107, 95, 555); 

//Array ([0] => 102 [2] => 97 [3] => 101 [4] => 107 [5] => 95) 
print_r(getAverageArray($min,$arr)); 
+0

如果第一个数字高于其他数字,这些代码工作不正确。例如:'(999,102,97,101,1,107,95) - >(999)' – Artem

+0

好吧,基本上,或者你使用第一个键或者你传递了平均数,你甚至可以计算它们全部。 。 – Sam

0

这是可能的,但你必须设置阈值。

  1. 得到的所有值的平均值

  2. 排除值,它们的`ABS(价值avergage)> your_threshold``