100までの数で3の倍数と、3のつく数字の時に"three"と出力させるプログラムを作りたいです。
3の倍数は以下のようにしました。
PHP
1for($i=1; $i<=100; $i++){ 2 if($i%3==0){ 3 echo "three"; 4 }else{ 5 echo $i; 6 } 7 echo "<br>"; 8}
しかし、3を含む時という条件をどのようにして確認すればよいのかわかりません。
正規表現で試してみたのですが、全部threeと出力されてしまいます...
for($i=1; $i<=100; $i++){ $result=preg_match("/3{0,1}/", (string)$i); if($i%3==0){ echo "three"; }else if($result){ echo "three"; }else{ echo $i; } echo "<br>"; }
初歩的な質問ですみませんが、お答えしていただけると幸いです。
追記です。
今回の場合、最大で100だとわかっているので、無理やりですが一の位、十の位、百の位の値を調べてやってみたのですが、3の倍数しかthreeになりません。
for($i=1; $i<=100; $i++){ $x = $i/100; //百の位 $y = ($i- $x*100)/10; //十の位 $z = $i-($x*100 + $y*10); //一の位 if($i%3==0){ echo "three"; }else if($x==3 || $y==3 || $z==3){ echo "three"; }else{ echo $i; } echo "<br>"; }
なぜこれがうまく機能しないのでしょうか?
回答5件
あなたの回答
tips
プレビュー