【问题标题】:PHP How to delete from array between values [duplicate]PHP如何从值之间的数组中删除[重复]
【发布时间】: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


    【解决方案1】:

    您可以遍历数组并使用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); 
    

    【讨论】:

    • 我知道我可以做到这一点,但我正在寻找最简单的方法,例如现有的 php 函数 ..
    • @Roufail 你可以用array_filter,看看我的回答
    【解决方案2】:

    看这个enter link description here

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

    你应该自己尝试一下

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度>
    【解决方案3】:

    扩展@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 &gt; $min || $value &lt; $max; 将变为 return $value &gt;= $min || $value &lt;= $max;

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度>
    • 已修复以添加更多细节,谢谢
    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2017-06-01
    • 2013-07-25
    • 2018-09-17
    相关资源
    最近更新 更多