我希望在相互连接的for循环中获得3个int值。我基本上想要的是:
000
001
002
003
010
011
...
323
330
331
我希望变量中的3个数字中的每一个都从0开始变化,最大3变为3时,它会使剩下的数字增加1
例如
for($i = 0; $i <= $array; $i++){
echo $a . $b . $c . "<br />"; //Output would be the example I showed above
}
答案 0 :(得分:4)
您可以使用base_convert
在您的案例库4中的任意碱基之间进行转换。
for($i=0, $max = base_convert(333, 4, 10); $i < $max; ++$i) {
echo base_convert($i, 10 , 4);
}
要获得0填充输出,请使用带有格式说明符的printf:
printf('%03d', base_convert($i, 10 , 4));
答案 1 :(得分:1)
for($a = 0; $a <= 3; $a++){
for($b = 0; $b <= 3; $b++){
for($c = 0; $c <= 3; $c++){
echo $a . $b . $c . "<br />";
}
}
}
答案 2 :(得分:1)
for($i = 0; $i <= 63; $i++){
$c = $i % 4;
$b = ($i - $c)/4 % 4;
$a = (($i - $c)/4 - $b)/4;
echo $a . $b . $c . "<br />"; //Output would be the example I showed above
}
这只是knittl答案的明确版本。 for循环让我们逐步执行从0到63的每个数字,这恰好与基数4中的0到333相对应。然后我们取$ i,它在基数10中,然后逐步将其转换为base 4。 %是模运算符 - 它在除法后返回余数。最不重要的char只是$ i / 4的剩余部分,因此我们将其保存为$ c。下一个字符是4个地方(就像10个基地的10个地方)。所以我们减去$ c,已经计算并除以4并做同样的事情。
答案 3 :(得分:1)
试试这个:
$count = 20; //how many numbers do you want
for($i =0; $i<$count; $i++) {
echo str_pad(base_convert($i, 10, 4),3,'0' , STR_PAD_LEFT) . '<br/>';
}
base_convert()
将每个$ i值从10 base转换为4。
str_pad()
用'0'填充给定长度(此处为3)。
STR_PAD_LEFT
表示应在左侧添加零。