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

PHP如何在值之间从数组中删除,php,Php,我想按最小值和最大值从数组中删除 例如,我有下一个数组 ['10','11','12','12.5','13','14','15.5','16'] 我需要删除12到13之间的值,以便 ['10','11','14','15.5','16'] 如何使其在PHP中工作? 有人能帮忙吗?提前感谢。您可以在数组中循环并使用unset删除符合条件的值,如下所示: $values = ['10','11','12','12.5','13','14','15.5','16']; foreach ($val

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

['10','11','12','12.5','13','14','15.5','16']
我需要删除12到13之间的值,以便

['10','11','14','15.5','16']
如何使其在PHP中工作?

有人能帮忙吗?提前感谢。

您可以在数组中循环并使用
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); 
$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); 
您也可以像这样使用
array\u filter
函数:

$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); 
$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); 
$values=['10'、'11'、'12'、'12.5'、'13'、'14'、'15.5'、'16'];
$result=数组\过滤器($value,函数($value){
返回$value<12 | |$value>13;
});
打印(结果);
看看这个

array数组\u过滤器(数组$array[,可调用$callback[,int$flag=0]])

迭代数组中的每个值,并将其传递给回调函数。如果回调函数返回true,则数组中的当前值将返回到结果数组中。保留数组键


你应该自己尝试一下,扩展一下@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;
}
函数removeBetween($arr、$min、$max){
如果($min>max){
$tmp=$min;
$min=$max;
$max=$tmp;
}
$filteredArray=array\u filter($array,function($value){
$value=(双)$value;
返回$value>$min | |$value<$max;
});
返回$filteredArray;
}
如果用户向后输入最大值和最小值,if语句将翻转它们。它使它更通用,因为如果要删除3和6之间或6和3之间的值,则结果应该是相同的

另外,这是一个排他方法,意味着您输入的数字不包括在删除中,如果您希望包含这些数字,只需在return语句中添加等号即可


返回$value>$min | |$value<$max
将变成
return$value>=$min | |$value虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了SO的未来访问者。我知道我可以做到这一点,但我正在寻找最简单的方法,例如现有的php函数。@Roufail你可以使用array\u filter,检查我的答案,而这段代码可能会回答这个问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了SO的未来访客。固定要添加更多细节,谢谢