1

我正在尝试找到一个接受数字并输出预期结果的函数,如下所示:

如果 input=1 那么输出应该是Array{'0','1'}

如果 input=2 那么输出应该是Array{'00','01','10','11'}

如果 input=3 那么输出应该是Array{'000','001','010','011','100','101','110','111'}

以此类推。类似于抛硬币。

我不知道php中是否有一个函数可以做到这一点,但如果没有人可以告诉我它是如何完成的?

4

2 回答 2

6

实际上,这只是二进制表示法中从 0 到 2^{input}-1 的数字

$max = pow(2, $input);
$result = array();
for ($i = 0; $i < $max; $i++) {
  $result[] = str_pad(base_convert($i, 10, 2), $input, 0, STR_PAD_LEFT);
}
于 2011-10-08T21:28:41.667 回答
1

与@KingCrunch 答案相同,但更简洁:

foreach (range(0, pow(2, $input)) as $i)
{
    $result[] = sprintf('%0' . $input . 'b', $i);
}

或者,如果您不喜欢sprintf

foreach (range(0, pow(2, $input)) as $i)
{
    $result[] = str_pad(decbin($i), $input, 0, STR_PAD_LEFT);
}
于 2011-10-08T21:58:25.173 回答