Php 获取所有可能组合的算法

Php 获取所有可能组合的算法,php,algorithm,Php,Algorithm,我有四个插槽。每个插槽可以是0或1。我如何进行循环以获得所有可能的组合?我怎么解决这个问题呢 以下是上下文: 在数据库表中,有四个字段(查看、创建、编辑和删除)。每个字段可以是0或1。我希望保存所有可能的组合。您可以使用4个嵌套循环来实现它: for ($a=0; $a<=1; $a++) { for ($b=0; $b<=1; $b++) { for ($c=0; $c<=1; $c++) { for ($d=0; $d<

我有四个插槽。每个插槽可以是0或1。我如何进行循环以获得所有可能的组合?我怎么解决这个问题呢

以下是上下文:


在数据库表中,有四个字段(查看、创建、编辑和删除)。每个字段可以是0或1。我希望保存所有可能的组合。

您可以使用4个嵌套循环来实现它:

for ($a=0; $a<=1; $a++) {
    for ($b=0; $b<=1; $b++) {
        for ($c=0; $c<=1; $c++) {
            for ($d=0; $d<=1; $d++) {
                echo "$a $b $c $d\n";
            }
        }
    }
}
或者,您可以从[0,16]范围内的数字中提取二进制数字:


for($i=0;$i)的答案是16,因为它是2^4。或者你的意思是让它显示每个组合?用二进制从0数到15。每个数字都对应一个组合。我只是不知道当用二进制数到15时循环该怎么办。是的,我的意思是显示结果,然后将每个组合插入数据库表中。
0 0 0 0
0 0 0 1
...
1 1 1 0
1 1 1 1
for ($i=0; $i<16; $i++) {
    $a = ($i & 8) ? 1 : 0;
    $b = ($i & 4) ? 1 : 0;
    $c = ($i & 2) ? 1 : 0;
    $d = ($i & 1) ? 1 : 0;
    echo "$a $b $c $d\n";
}