【发布时间】:2018-08-10 18:17:34
【问题描述】:
我想按最小值和最大值从数组中删除
例如我有下一个数组
['10','11','12','12.5','13','14','15.5','16']
我需要删除从 12 到 13 的值
['10','11','14','15.5','16']
如何让它在 PHP 中工作?
有人可以帮忙吗?提前致谢。
【问题讨论】:
标签: php
我想按最小值和最大值从数组中删除
例如我有下一个数组
['10','11','12','12.5','13','14','15.5','16']
我需要删除从 12 到 13 的值
['10','11','14','15.5','16']
如何让它在 PHP 中工作?
有人可以帮忙吗?提前致谢。
【问题讨论】:
标签: 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);
结果:
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);
【讨论】:
看这个enter link description here
array array_filter ( array $array [, callable $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;
}
如果用户向后输入最大值和最小值,if 语句将翻转它们。它使它更通用,因为如果你想删除 3 和 6 或 6 和 3 你的结果应该是相同的。
这也适用于 EXCLUSIVE 方法,这意味着您输入的数字不包括在删除中,如果您希望它们包含在内,只需在 return 语句中添加等号。
return $value > $min || $value < $max; 将变为 return $value >= $min || $value <= $max;
【讨论】: