相关疑难解决方法(0)

PHP中的数组组合

考虑以下数组:

$a = [['x'], ['y', 'z', 'w'], ['m', 'n']];
Run Code Online (Sandbox Code Playgroud)

如何从中生成以下数组:

$output=[
[[x][y][m]],
[[x][z][n]],
[[x][w][m]],
[[x][y][n]],
[[x][z][m]],
[[x][w][n]],
];
Run Code Online (Sandbox Code Playgroud)

我正在寻找比我更有效的代码.(我目前的代码如下所示)

php arrays combinatorics multidimensional-array

10
推荐指数
3
解决办法
3054
查看次数

PHP采用所有组合

我看到这个算法将采用数字或单词并找到所有可能的组合

我正在使用它,但它不会返回所有"真正的"组合.

PHP:

<?php
    require_once 'Math/Combinatorics.php';
    $words = array('cat', 'dog', 'fish');
    $combinatorics = new Math_Combinatorics;
    foreach($combinatorics->permutations($words, 2) as $p) {
        echo join(' ', $p), "\n"; 
    }
?>
Run Code Online (Sandbox Code Playgroud)

它返回:

cat dog
dog cat
cat fish
fish cat
dog fish
fish dog
Run Code Online (Sandbox Code Playgroud)

但这些都不是真正的组合,所有真正的组合也包括这些:

cat cat
dog dog
fish fish
Run Code Online (Sandbox Code Playgroud)

这就是我需要的,获得所有真实组合的方法:

cat dog
dog cat
cat fish
fish cat
dog fish
fish dog
cat cat
dog dog
fish fish
Run Code Online (Sandbox Code Playgroud)

php algorithm combinations combinatorics discrete-mathematics

8
推荐指数
1
解决办法
4567
查看次数