2012-04-20 66 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