php - 在 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;
}
谢谢你
解决方案
推荐阅读
- javascript - Javascript 使用对象和重命名属性来扁平化深度嵌套的数组
- javascript - JQuery 使用类标签 onclick 附加 HTML
- apache-kafka - 如果生产者执行重试,两条消息是否具有相同的时间戳?
- c++ - 难以理解动态多态性
- angular - getDisplayMedia 未在 TypeScript 3.8 中指定
- java - 根据Android中的本地语言更改语言
- django - 构建的 Docker 映像无法到达 postgreSQL
- asp.net - 404 - 找不到文件或目录。本地和服务器的不同结果
- android - 我们可以在没有真实设备的情况下在 Android Studio 中创建一个真实设备模型特定的模拟器/模拟器,比如 OPPO A37 模型吗
- javascript - 如何在数组中写入对象?