获取for循环中的特定数字

时间:2013-09-18 12:20:15

标签: php for-loop

我希望在相互连接的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
}

4 个答案:

答案 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表示应在左侧添加零。