我们正在一个庞大的列表(包含500万个元素的数组)上运行PHP代码。
列表格式如下(乍看之下看起来“很奇怪”,但这是迄今为止我们为了优化下面的代码的速度而出现的最佳格式)
$array = array(
array(1 => true,3 => true),array(2 => true,4 => true,6 => true),array(3 => true,5 => true),array(5 => true),array(4 => true,8 => true,10 => true),array(200 => true,300 => true)
);
我们要组合上面数组中的相似元素,并得到以下结果:
$final_array = array(
array(1,3,5),array(2,4,6,8,10),array(200,300)
);
我们决定不使用array(1,3)
,而是决定使用array(1 => true,3 => true)
,因为使用键而不是值(用于存储信息)使下面的代码运行更快,并且如上所述输出$final_array
。
foreach ($array as $key1 => $value1) {
foreach ($array as $key2 => $value2) {
if ($key1 != $key2) {
foreach ($array[$key1] as $key3 => $value3) {
if (isset($array[$key2][$key3])) {
$array[$key2] = $array[$key2] + $array[$key1];
unset($array[$key1]);
break 2;
}
}
}
}
}
但是上面的代码仍然很慢。您能否找到一种更好的方法,以更快的代码将相似的元素彼此聚合?