首页 > 解决方案 > 在 PHP 中从数组创建所有可能的子集

问题描述

我想在 PHP 中为二维数组创建所有可能的组合

这是我的数组

$skus = [
    ["A","B","C"],
    ["L","M","N"],
    ["","B","C"]
];

我想要的可能解决方案如下

$skus = [
    ["A"],
    ["B"],
    ["C"],
    ["L"],
    ["M"],
    .
    .
    .
    ["A","L"],
    ["A","M"],
    ["A","N"],
    .
    .
    .
    ["A","L","X"]
];

我试过一个,但它只提供三种组合可能性

public function possibleCombinations($arrays, $i = 0) {
    if (!isset($arrays[$i])) {
        return array();
    }
    if ($i == count($arrays) - 1) {
        return $arrays[$i];
    }

    // get combinations from subsequent arrays
    $tmp = $this->possibleCombinations($arrays, $i + 1);

    $result = array();

    // concat each array from tmp with each element from $arrays[$i]
    foreach ($arrays[$i] as $v) {
        foreach ($tmp as $t) {
            $skusComb = is_array($t) ?
                array_merge(array($v), $t) :
                array($v, $t);
            $result[]["sku_set"] = implode(",", $skusComb);
        }
    }

    return $result;
}

谢谢你

标签: phparrays

解决方案


推荐阅读