PHP如何在值之间从数组中删除

时间:2018-03-02 14:02:53

标签: php

我想通过最小值和最大值从数组中删除
例如我有下一个数组

['10','11','14','15.5','16']

我需要删除12到13之间的值

a

如何使它在PHP中工作?
任何人都可以帮忙吗?提前谢谢。

3 个答案:

答案 0 :(得分:2)

您可以遍历数组并使用unset删除符合条件的值,如下所示:

$values = ['10','11','12','12.5','13','14','15.5','16'];
foreach ($values as $i => $value) {
    if ($value >= 12 && $value <= 13) {
        unset($values[$i]);
    }
}

print_r($values); 

结果:

Array
(
    [0] => 10
    [1] => 11
    [5] => 14
    [6] => 15.5
    [7] => 16
)

您也可以使用array_filter这样的功能:

$values = ['10','11','12','12.5','13','14','15.5','16'];

$result = array_filter($values, function($value) {
                return $value < 12 || $value > 13;
            });

print_r($result); 

答案 1 :(得分:0)

看这个enter link description here

  

array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
  迭代数组中的每个值,将它们传递给回调函数。如果回调函数返回true,则将数组中的当前值返回到结果数组中。数组键被保留。

你应该自己尝试一下

答案 2 :(得分:0)

在@Philip Maurer上展开

function removeBetween($arr, $min, $max){
          if($min>max){
               $tmp = $min;
               $min = $max;
               $max = $tmp;
          }

          $filteredArray = array_filter($array, function($value) {
              $value = (double)$value;
              return $value > $min || $value < $max;
          });
          return $filteredArray;
}

如果用户向后输入,则if语句将翻转max和min值。它使它更通用,因为如果你想删除3到6或6和3之间,你的结果应该是相同的。

此外,这是一个EXCLUSIVE方法,意味着您输入的数字不包括在删除中,如果您希望包含它们,只需在return语句中添加等号。

return $value > $min || $value < $max;将成为return $value >= $min || $value <= $max;