列出 PHP 中 php 布尔值数组中的所有可能组合

List all combination possible in a php array of boolean value in PHP

我会尽力更好地解释我的需求。

我需要从 scrach 生成一个包含许多数组的多向数组。内部数组必须是包含 7 个布尔值的数组。我需要拥有 7 个布尔值的所有可能组合。有 7 个案例,它构成 128 个内部数组。

这是我需要的输出示例,以便于理解:

$sequence = array(
    array(true, true, true, true, true, true, true),
    array(true, true, true, true, true, true, false),
    array(true, true, true, true, true, false, false)
);

我需要对每个 7 数组值进行布尔值的所有可能组合。

我试图在发布之前找到解决方案,但我一无所获。

感谢您的帮助

P-S.: 稍后,我将需要做同样的事情,但每个 table 有 30 个布尔值,而不是 7 个。因此,如果解决方案可以灵活,那就更好了!

解决方案: 这就是我成功得到我需要的东西的方式,对我检查的解决方案进行了一些修改。

<?php

$length = 7;

$totalCombos = pow(2, $length);

$sequences = array();

for($x = 0; $x < $totalCombos; $x++) {
    $sequence[$x] = str_split(str_pad(decbin($x), $length, 0, STR_PAD_LEFT));
}

?>

我已经添加了 str_split 以获得一个独立值的数组。

这样就可以了,而且很灵活。

<?php

$length = 7;

$totalCombos = pow(2, $length);

for($x = 0; $x < $totalCombos; $x++) {
    echo str_pad(decbin($x), $length, 0, STR_PAD_LEFT) . PHP_EOL;
}

这是一个基于位运算符和短语法的解决方案:

$length = 7;
$totalCombos = 2 ** $length;
$sequences = [];

for($i = 0; $i < $totalCombos; $i++) {
    $row = [];

    for ($j = 0; $j < $length; $j++) {
        $row[] = (bool)(($i >> $length) & 1);
    }
    
    $sequences[] = $row;
}