我正在尝试找到一个接受数字并输出预期结果的函数,如下所示:
如果 input=1 那么输出应该是Array{'0','1'}
如果 input=2 那么输出应该是Array{'00','01','10','11'}
如果 input=3 那么输出应该是Array{'000','001','010','011','100','101','110','111'}
以此类推。类似于抛硬币。
我不知道php中是否有一个函数可以做到这一点,但如果没有人可以告诉我它是如何完成的?
我正在尝试找到一个接受数字并输出预期结果的函数,如下所示:
如果 input=1 那么输出应该是Array{'0','1'}
如果 input=2 那么输出应该是Array{'00','01','10','11'}
如果 input=3 那么输出应该是Array{'000','001','010','011','100','101','110','111'}
以此类推。类似于抛硬币。
我不知道php中是否有一个函数可以做到这一点,但如果没有人可以告诉我它是如何完成的?
实际上,这只是二进制表示法中从 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);
}
与@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);
}