2012-12-25 86 views
2

我想指定一些位,然後在PHP中獲取包含這些位的所有可能組合的數組。生成所有可能的二進制組合

例子:

number: 3 
000 
001 
010 
011 
etc... 

我已經試過它最初設計用於字符串遞歸算法,所以算法太慢。

什麼是最有效的方法來做到這一點?

回答

6

關於位的好的部分是,你可以用它們做很簡單的事情。如果你想要3位,你會有7個數字,恰好是8-1。如果你想要4位,你會有15個數字,恰好是16-1。使用這個很好的事實來使你的代碼簡單。

$bits = 4; 
$max = (1 << $bits); 

for ($i = 0; i < $max; $i++) { 
    // Use $i 
    // echo str_pad(decbin($i), $bits, '0', STR_PAD_LEFT); 
} 
+0

我認爲最好的部分是枚舉數和計數是相同的事情。 –

+0

是的,那太好了! –

+0

@Sosumi PHP有不錯的['decbin'](http://php.net/manual/en/function.decbin.php)和['str_pad'](http://php.net/manual/en/function名爲.str-pad.php)函數。 – irrelephant

相關問題