PHP将数组元素两两组合为新数组

// 方式一
for($i=1; $i<=4; $i++){
    $array[] = $i;
}
for($i=0; $i<count($array); $i++){
    for($j=0; $j<count($array)-$i-1; $j++) {
        $array2[] = [$array[$i], $array[$i+$j+1]];
    }
}
print_r($array2);
// 结果
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

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

    [2] => Array
        (
            [0] => 1
            [1] => 4
        )

    [3] => Array
        (
            [0] => 2
            [1] => 3
        )

    [4] => Array
        (
            [0] => 2
            [1] => 4
        )

    [5] => Array
        (
            [0] => 3
            [1] => 4
        )

)

// 方式二
$arr = ['A', 'B', 'C', 'D'];
$new_arr = [];
while (count($arr) > 1) {
    $item = array_shift($arr);
    foreach ($arr as $value) {
        $new_arr[] = [$item, $value];
    }
}
var_dump($new_arr);

// 方式三
// 数组中任意两个元素之间都要组合一下
$r = [];
$arr = array('A','B','C','D');
$num = count($arr);
for ($i=0;$i<$num; $i++) {
    for($j=$num-1; $j>$i; $j--){
        $r[] = [$arr[$i], $arr[$j]];
    }
}
print_r($r);

// 并非这种切数组
$input_array = array('a', 'b', 'c', 'd', 'e');
var_dump(array_chunk($input_array, 2));
// 结果
array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
  }
  [1]=>
  array(2) {
    [0]=>
    string(1) "c"
    [1]=>
    string(1) "d"
  }
  [2]=>
  array(1) {
    [0]=>
    string(1) "e"
  }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值