我想通过最小值和最大值从数组中删除
例如我有下一个数组
['10','11','14','15.5','16']
我需要删除12到13之间的值
a
如何使它在PHP中工作?
任何人都可以帮忙吗?提前谢谢。
答案 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;