php数组合并不同的地方,合并PHP数组中的重叠区域?

好吧,这是草拟的,所以可能有一些怪癖。用下面的数据进行了测试,结果似乎很好。可能不是最好的方法,但这是一种方法,而且确实有效。问题让我知道。

function combineRange($array) {

if (is_array($array)) {

// Sort the array for numerical order

sort($array);

// Set Defaults

$prev = array();

$prev_key = null;

foreach ($array as $key => $item) {

// First time around setup default data

if (empty($prev)) {

$prev = $item;

$prev_key = $key;

continue;

}

if ($item[0] >= $prev[0] && $item[0] <= $prev[1]) {

// Incase the last number was less than do not update

if ($array[$prev_key][1] < $item[1])

$array[$prev_key][1] = $item[1];

unset($array[$key]);

}else {

$prev_key = $key;

}

$prev = $item;

}

}

return $array;

}

$array = array(

5 => array(13, 16),

0 => array(1, 5),

1 => array(4, 8),

2 => array(19, 24),

3 => array(6, 9),

4 => array(11, 17),

6 => array(21, 30),

);

var_dump(combineRange($array));

输出:

array(3) {

[0]=>

array(2) {

[0]=>

int(1)

[1]=>

int(9)

}

[3]=>

array(2) {

[0]=>

int(11)

[1]=>

int(17)

}

[5]=>

array(2) {

[0]=>

int(19)

[1]=>

int(30)

}

}

希望对你有用!

编辑

我看我被打败了一个小时=\Oh well!我仍然在发帖,因为这是一个不同的方法,假设我可能会选择Konforce的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值