在PHP中分组并减少行号
如何对阵列中的重复项进行分组和删除在PHP中分组并减少行号,php,Php,如何对阵列中的重复项进行分组和删除 $list = [ '01 02 03', '01 02 04', '01 02 05', '01 02 06', '01 03 04', '01 03 05', '01 03 06', '01 04 05', '01 04 06', '01 05 06', '02 03 04', '02 03 05', '02 03 06', '02 04 05', '02 04 06', '02 05 06', '03 0
$list = [
'01 02 03', '01 02 04', '01 02 05', '01 02 06',
'01 03 04', '01 03 05', '01 03 06', '01 04 05',
'01 04 06', '01 05 06', '02 03 04', '02 03 05',
'02 03 06', '02 04 05', '02 04 06', '02 05 06',
'03 04 05', '03 04 06', '03 05 06', '04 05 06'
];
$x = 1;
$y = 2;
for($i=0; $i <= count($list)-3; $i++){
$first = $list[$i];
$second = $list[$x];
$third = $list[$y];
$_second = explode(" ", $second);
$_first = explode(" ", $first);
$_third = explode(" ", $third);
$result[] = array_unique(array_merge($_first, $_second, $_third));
sort($result[$i]);
$x++;
$y++;
}
$list=[
'01 02 03', '01 02 04', '01 02 05', '01 02 06',
'01 03 04', '01 03 05', '01 03 06', '01 04 05',
'01 04 06', '01 05 06', '02 03 04', '02 03 05',
'02 03 06', '02 04 05', '02 04 06', '02 05 06',
'03 04 05', '03 04 06', '03 05 06', '04 05 06'
];
$x=1;
$y=2;
对于($i=0;$i),我试图为您解决这个问题,下面是工作原理
$list=[
'01 02 03', '01 02 04', '01 02 05', '01 02 06',
'01 03 04', '01 03 05', '01 03 06', '01 04 05',
'01 04 06', '01 05 06', '02 03 04', '02 03 05',
'02 03 06', '02 04 05', '02 04 06', '02 05 06',
'03 04 05', '03 04 06', '03 05 06', '04 05 06',
];
$arr=数组值(数组唯一(爆炸(“”,内爆(“”,$list));
$min=(int)min($arr);
$max=(int)max($arr);
函数查找顺序($min、$max、$max\u 1、$res){
对于($j=0;$j<5;$j++){
如果($min!=$max_1){
对于($i=$min;$i欢迎来到SO@Leonardo,你可以包括你得到的和你期望的,这对解决你的问题有很大帮助。如果有一个行变量,例如01 02 03 04 05…04 05 06 07 08,我想分成6个组和28行,例如01 02 03 04 05 06…03 04 04 05 06 07 08如何申请code@LeonardoMachado抱歉,我不理解这个问题,请发布另一个问题并解释它,并在评论中分享你问题的链接,当我有空时,我可能会尝试为你解决它。另外,请尝试理解上面的findSequence()
function您需要的所有逻辑都在这里,否则只需从数据或支持数据中找到最小值和最大值。对不起,我不会说英语,但在这里我找到了最佳解决方案,因此我用您的语言进行了研究。我将在这里发布与示例组的链接。
$list = [
'01 02 03', '01 02 04', '01 02 05', '01 02 06',
'01 03 04', '01 03 05', '01 03 06', '01 04 05',
'01 04 06', '01 05 06', '02 03 04', '02 03 05',
'02 03 06', '02 04 05', '02 04 06', '02 05 06',
'03 04 05', '03 04 06', '03 05 06', '04 05 06',
];
$arr = array_values(array_unique(explode(' ', implode(' ', $list))));
$min = (int) min($arr);
$max = (int) max($arr);
function findSequence($min, $max, $max_1, $res) {
for($j = 0; $j < 5; $j++){
if ($min != $max_1) {
for ($i = $min; $i <= $max; $i++) {
if ($i == $max_1) {
continue;
} else {
$res .= "0" . $i . " ";
}
}
$max_1--;
$res = trim($res)."\r\n";
}else{
for ($i = $min; $i <= $max; $i++) {
if ($i == $max_1) {
continue;
} else {
$res .= "0" . $i . " ";
}
}
$max_1--;
$res = trim($res)."\r\n";
}
}
return $res;
}
$max_1 = $max;
$max_1--;
$result = findSequence($min, $max, $max_1, "\r\n");
print_r($result);