gpt4 book ai didi

php - 合并 PHP 数组中的重叠范围?

转载 作者:IT王子 更新时间:2023-10-28 23:53:10 25 4
gpt4 key购买 nike

我有一个格式如下的数组:

array(
0 => array(1, 5),
1 => array(4, 8),
2 => array(19, 24),
3 => array(6, 9),
4 => array(11, 17),
);

其中每个项目都是 X 到 Y 的范围。我想合并数组中的重叠范围,以获得更像这样的东西:

array(
0 => array(1, 9), // 1-5, 4-8 and 6-9 are overlapping, so they are merged
1 => array(11, 17),
2 => array(19, 24),
);

实现此目标的最佳方法是什么?

最佳答案

未经测试,但这里的想法是首先根据第一个元素对数据进行排序,然后尽可能长地将后续元素与前一个元素合并。

usort($data, function($a, $b)
{
return $a[0] - $b[0];
});

$n = 0; $len = count($data);
for ($i = 1; $i < $len; ++$i)
{
if ($data[$i][0] > $data[$n][1] + 1)
$n = $i;
else
{
if ($data[$n][1] < $data[$i][1])
$data[$n][1] = $data[$i][1];
unset($data[$i]);
}
}

$data = array_values($data);

关于php - 合并 PHP 数组中的重叠范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com