PHP 将数组元素进行两两排列组合 形成新的数组

在某个业务场景中  我们需要对其数组中的数据进行两两比较,此时 我们很希望将其所有元素进行两两排列组合  此处已实现  源代码如下:

<?php

$arr = array('a','b','c','d');
$result = array();

function processingPermutations($arr,$group_num=2){
    $res = [];
    $temp = getCombinationToString($arr, $group_num);

    foreach($temp as $key=>$val){
        $res[] = explode("|",$val);
    }
    return $res;
}
echo "<pre>";
print_r(processingPermutations($arr,2));
die;

function getCombinationToString($arr, $m) {
	if ($m ==1) {
	   return $arr;
	}
	$result = array();
	
	$tmpArr = $arr;
	unset($tmpArr[0]);
	for($i=0;$i<count($arr);$i++) {
		$s = $arr[$i];
		$ret = getCombinationToString(array_values($tmpArr), ($m-1), $result);
		
		foreach($ret as $row) {
            if($s!=$row){
                $str = $s."|".$row;
                $t = explode('|', $str);
                $exchange = trim($t[1]) . '|' .trim($t[0]);
                
                $key = array_search($exchange,$result);
                if(!$key){
                   $result[] = $str; 
                }
            }
        }
    }
    return $result;
}

  输出结果如下:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => a
            [1] => c
        )

    [2] => Array
        (
            [0] => a
            [1] => d
        )

    [3] => Array
        (
            [0] => b
            [1] => c
        )

    [4] => Array
        (
            [0] => b
            [1] => d
        )

    [5] => Array
        (
            [0] => c
            [1] => d
        )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值