2013-07-09 20 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

相关问题