2013-07-09 50 views
0

我不想使用循環(除非沒有其他方法)。我知道如何使用foreach循環和構建2個數組來完成此操作,但我想知道是否在PHP中存在構建函數。將一個數組分成兩個數組,其值大於並小於給定的針PHP

$arr = array(1 => 0.1, 2 => 0.20, 3 => 0.40, 4 => 0.60); 

我想調用函數後拿到產生兩個數組:

$twoArrays = split_arrays($arr, 0.3); 

$ twoArrays將持有的值:

array(
    0 => array(1 => 0.1, 2 => 0.20), 
    1 => array(3 => 0.40, 4 => 0.60) 
); 

基本上我想1個陣列舉行所有值小於0.3另一個大於0.3

隨着循環我可以做到這一點,是否有一個PHP內置函數?

注意:我需要保持照原樣。

+2

答案很簡單:'不存在isn't' ......在實際應用中,使用array_filter用回調兩條線是一個替代的循環 –

+0

不,一循環(或其中一個「回調」數組映射/過濾/行走功能歸結爲相同的事情,並且循環更具可讀性)。 – Wrikken

+0

內置的php內部會使用循環。所以... – 2013-07-09 22:16:21

回答

2

你可以使用array_filter()兩次:

$bottom = array_filter($myArray, function($val){return ($val<=0.3)}); 

$top = array_filter($myArray, function($val){return ($val>0.3)}); 
+0

謝謝你的回答。我猜我會使用這種方法 – GGio

+0

一個更好的解決方案可能是使用'array_filter()'作爲第一種情況,然後使用'array_diff()'來獲得剩下的東西 - 它防止潛在的錯誤編寫基本上相同的測試兩次。 – jcsanyi

+0

雖然這不會保留鍵,所以它可能無法在此特定實例中工作。 – jcsanyi

相關問題