2012-04-20 55 views
1

我有一个数组,可以说这些键是:100,512,610,21,176,64。我总是可以根据需要对数组进行排序。拆分数组 - 丢弃低于某个值的键?

我想摆脱有低于一定值的关键,比如低于110这将摆脱100,21数组值,以及64

我想这样做没有用一个foreach。有没有一个我可以使用的函数,在哪里我可以对数组进行排序,找到拼接点,并从那里一举删除那个chanck?

谢谢!

+1

foreach出了什么问题?这个要求是否目标?该解决方案将采取3条有意义的线 – zerkms 2012-04-20 01:49:20

+0

我只是不喜欢使用循环,如果我可以避免它。此外,我认为可能有办法告诉PHP“嘿,你看到那个位置吗?把所有东西都放在上面,把所有东西都扔掉”。 =) – Ryan 2012-04-20 01:51:22

+0

“我只是不喜欢使用循环,如果我可以避免它”--- omg。请记住第一个编程规则:程序是为开发人员编写的,而不是为编译器编写的。因此,编写易于理解的代码,而不是采用“少”行来实现 – zerkms 2012-04-20 01:53:02

回答

4

循环是最直接的方式。为了它的乐趣,这里是没有(可见)循环的解决方案:

$array = array_intersect_keys(
    $array, 
    array_flip(array_filter(
     array_keys($array), 
     function ($key) { return $key > 110; } 
    )) 
); 

也许你应该使用循环来代替。

+1

绝对循环更好。这个“oneliner”真的很难理解:-) +1虽然 – zerkms 2012-04-20 01:51:17

+0

我对这个vs循环的性能感兴趣,当涉及到潜在的数百行时。明天我会测试一下,但现在你得到一个聪明的+1 =) – Ryan 2012-04-20 01:53:58

+1

@Ryan:'foreach'会更快。如果你在代码中没有看到任何明显的循环结构 - 它并不意味着没有任何代码。在这个例子中,我可以想到至少** 4 **循环 – zerkms 2012-04-20 01:56:00