0

相互に接続された for ループで 3 つの int 値を取得したいと考えています。私が基本的に欲しいのはこれです:

000
001
002
003
010
011
...
323
330
331

0から始まる変数に3つの数値のそれぞれを入れ、3を超えると最大3になり、残りの数値が1増加します

例えば

for($i = 0; $i <= $array; $i++){
 echo $a . $b . $c . "<br />"; //Output would be the example I showed above
}
4

4 に答える 4

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));
于 2013-09-18T12:24:49.283 に答える
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 ベースから 4 に変換します。

str_pad()指定された長さまで「0」で埋めます(ここでは3)。

STR_PAD_LEFT左側にゼロを追加する必要があることを意味します。

于 2013-09-18T12:29:33.880 に答える
1
for($a = 0; $a <= 3; $a++){
 for($b = 0; $b <= 3; $b++){
    for($c = 0; $c <= 3; $c++){
       echo $a . $b . $c . "<br />";
     }
  }
}
于 2013-09-18T12:23:22.053 に答える
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 に対応します。次に、基数 10 の $i を取得し、それを基数 4 に段階的に変換します。% はモジュロ演算子です。除算後の剰余を返します。最下位の char は単に $i/4 の残りなので、それを $c として保存します。次の文字は 4 桁です (基数 10 の 10 桁のように)。したがって、すでに考慮されている $c を引き、4 で割り、同じことを行います。

于 2013-09-18T12:25:41.977 に答える