ナベアツプログラム(3の倍数と3の付く数字)

このQ&Aのポイント
  • 100までの数字を表示し、見やすいように3桁揃えで10ずつで改行して、3の倍数と3のつく数字を太字で表示するプログラムを書いてみました。
  • ただし、30だけ太字になりません。
  • 原因がわかる方がいらっしゃれば教えていただけたら嬉しいです。
回答を見る
  • ベストアンサー

ナベアツプログラム(3の倍数と3の付く数字)

PHPを勉強中です。 勉強の為に思いついたものをPHPで書いてみようと思い、ネタが古いですが100までの数字を表示し、見やすいように3桁揃えで10ずつで改行して、3の倍数と3のつく数字を太字で表示するプログラムを書いてみました。なんとなくできたようなかんじなのですが、30だけ太字になりません。原因がわかる方がいらっしゃれば教えていただけたら嬉しいです。よろしくお願いします。 <?php for($i = 1; $i <= 100; $i++){ if($i % 10 == 0) { echo sprintf('%03d', $i)." "."<br>"; } elseif($i % 3 == 0) { echo('<strong>'.sprintf('%03d', $i)." ".'</strong>'); }elseif(strpos($i,"3") !== false) { echo('<strong>'.sprintf('%03d', $i)." ".'</strong>'); }else{ echo sprintf('%03d', $i)." "; } } ?>

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

30を10で割るとあまりが0なので仕様が競合していますね とりあえずこんな感じでは? <?php for($i = 1; $i <= 100; $i++){ $str=sprintf("%03d", $i); if(($i % 3) == 0 or strpos((string) $i,"3") !== false) { echo("<strong>".$str."</strong>"); }else{ echo $str; } echo " "; if($i % 10 == 0) echo "<br>\n"; } ?>

duralexpicardie
質問者

お礼

意図した通りに表示されました! スマートな回答ありがとうございました。 自分のと見比べてどこがダメだったのか研究してみたいと想います。 本当にありがとうございました!

その他の回答 (1)

回答No.1

>if($i % 10 == 0) { >echo sprintf('%03d', $i)." "."<br>"; >} これいらないだろ 削ったあと、elseifはいきなり登場できないのでifに

duralexpicardie
質問者

お礼

リンク先のプログラムありがとうございます! 見比べて勉強してみたいと思います。 ありがとうございました!

関連するQ&A

  • phpで3の倍数かつ7の倍数を表すのが if

    phpで3の倍数かつ7の倍数を表すのが if ($x % 3 == 0 && $x % 7 == 0) なんでこれが、 3の倍数かつ7の倍数という意味になるのでしょうか? ↓以下のコードから抜粋 <?php $x = 1071; // 以下にif-elseif-else文を書いてください + if ($x % 3 == 0 && $x % 7 == 0) { + echo 'xは3の倍数かつ7の倍数です。'; + } elseif ($x % 3 == 0) { + echo 'xは3の倍数ですが7の倍数ではありません。'; + } elseif ($x % 7 == 0) { + echo 'xは7の倍数ですが3の倍数ではありません。'; + } else { + echo 'xは7の倍数でも3の倍数でもありません。'; + } ?> </body> </html>

    • ベストアンサー
    • PHP
  • 1~100の数字の9の倍数だけ同じ文字、他はランダム

    教えてくださいm(__)m タイトルの通り、0~100の数字の9の倍数だけ同じ文字、他はランダムになるようにするにはどうやって組み立てたらいいのでしょうか? 0~100の数字のうち、9、18、27、36、45、54、63、72、81、90、99だけ同じ文字(例えばA)が表示されるようにしたいのです。でも更新するたび、ランダムに文字(例えばB)が変わります。 その数字は適当な文字(9の倍数以外の文字)がランダムに表示されます。 http://search.net-newbie.com/php/function.array-rand.html ↑のように「array_rand」を使えばいいと思うのですが・・よくわからず・・・(>0<) どういう風にプログラムを書いたらいいのでしょうか。 分かる方いましたら、お願いしますm(__)m

    • ベストアンサー
    • PHP
  • 九九の表において5の倍数のみ青文字にする。

    PHPで九九の表において5の倍数のみ青文字にする方法教えてください。 <?php echo "<tr bgcolor='#99FF99'>"; echo "<td></td>"; for( $i=1; $i <= 9; $i++ ){ echo "<font size=6>$i</font></td>"; } echo "$i</tr>\n"; for( $i=1; $i <= 9; $i++ ){ echo "<tr><td bgcolor='#99FF99'>" . $i . "</td>"; for( $j=1; $j<=9; $j++ ){ $atai = $i * $j; echo "<td>" . $atai . "</td>"; } echo "</tr>\n"; } ?>

    • ベストアンサー
    • PHP
  • Fizz-Buzz問題のソース

    プログラミングの初心者です。 Fizz-Buzz問題をPHPで書いてみました。 <?php for ($i=1; $i<=100; $i++) { if ($i%3==0 && $i%5==0) { // 3でも5でも割り切れる数 echo "Fizz-Buzz"; } elseif ($i%3==0 && $i%5!==0) { // 3で割り切れる数 echo "Fizz<br>"; } elseif ($i%3!==0 && $i%5==0) { //5で割り切れる数 echo "Buzz<br>"; } else{ //3でも5でも割り切れない数 echo "$i<br>"; } } ?> こんな感じになったのですが、何か問題点はあるでしょうか? ちなみに、echo末尾に<br>を入れているのは、<br>なしで作ると、12Fizz4Buzz……と改行なしに表示されて読みにくかったからです。 インターネット上のソースを見ると、$i%3==0 && $i%5==0 ではなく $i%15==0 にしていたり、三項演算子を使ってバイト数を減らしたりと色々工夫がされているようですが、そちらのほうがよいのでしょうか。

    • 締切済み
    • PHP
  • キーが倍数の時の値の存在チェック方法

    PHP5.2.4を使用しています。 連想配列のキーが[]で囲まれている時、 その中の数字が倍数としてチェックされるとします。 次の例では、3と4の倍数の時に条件(if (is_int($wk)))に引っかかり キーの値(3の倍数です、など)が表示されます。 ただこのやり方だと、foreachでループさせないと倍数かどうかが分からないので、 もっと効率の良い(isset($arr[$i])で調べられるような)調べ方はできないでしょうか? $arr = array(  '1' => '1です',  '2' => '2です',  '[3]' => '3の倍数です',  '[4]' => '4の倍数です', ); for ($i = 1; $i < 15; $i++) {  if (isset($arr[$i])) //←全てこの(簡単な)条件式で調べられれば良いのですが・・・  {   print "{$arr[$i]}<br>\n";  }  foreach ($arr as $key => $value)//←キーが倍数かはどうしても全てのキーをチェックせざるえない  {   if (preg_match("/\[(\d+)\]/", $key, $match))   {    $wk = $i / $match[1];    if (is_int($wk)) //←除算した結果が整数ならその倍数だと判明    {     print "i={$i} {$arr[$match[0]]}<br>\n";    }   }  } } 1です 2です i=3 3の倍数です i=4 4の倍数です i=6 3の倍数です i=8 4の倍数です i=9 3の倍数です i=12 3の倍数です i=12 4の倍数です i=15 3の倍数です

    • 締切済み
    • PHP
  • テンプレートエンジンを使ったPHP内での呼び出し

    http://hokori.net/2008/03/01/thmltemplate_for_php/ こちらのページのテンプレートを利用しているのですが、PHP内でうまく呼び出しができず空白ページが表示されてしまいます。 下記のような場合はどのようにすればよいでしょうか。 <? $num = {val event/image01}; $num = sprintf("%08d", $num); echo $num; ?> {val event/image01}には「13」が呼び出されるようになっています。 <? $num = '{val event/image01}'; $num = sprintf("%08d", $num); echo $num; ?> 「''」でかこって見ると、00000000と表示されてしまいました。 00000013と表示したいのですがどのようにすればよいでしょうか。

    • ベストアンサー
    • PHP
  • 日本語が文字化けしてしまう・・

    こんにちは! phpを勉強して間もない初心者です。 Tera Padでphpを書いているのですが、関数によっては日本語が文字化けしてしまい困っております。 ちなみにTera Pad中、表示→オプション→文字コードタブにて設定を以下のようにしてあります。 初期文字コード:EUC 保存文字コード:EUC 初期改行コード:LF 保存改行コード:LF ↓このように書くと日本語は正しく表示されるのですが、 _______________________________ <?php print(date("現在y年m月d日H時i分s秒になります。")); ?> _______________________________ ↓この場合だと文字化けしてしまいます。 _______________________________ <?php $uranai = rand(1,7); if ($uranai == 1) { print ("おはよう"); } elseif ($uranai == 2) { print ("おはようございます"); } elseif ($uranai == 3) { print ("こんにちは"); } elseif ($uranai == 4) { print ("いいお天気ですね"); } elseif ($uranai == 5) { print ("今日は雨です"); } elseif ($uranai == 6) { print ("暑いですね"); } elseif ($uranai == 7) { print ("寒いですね"); } ?> _______________________________ 有識者の方いらっしゃいましたら宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 九九の表において5の数字にする方法教えてください。

    九九の表において5の数字にする方法教えてください。 <?php echo "<tr bgcolor='#99FF99'>"; echo "<td></td>"; for( $i=1; $i <= 9; $i++ ){ echo "<font size=6>$i</font></td>"; } echo "$i</tr>\n"; for( $i=1; $i <= 9; $i++ ){ echo "<tr><td bgcolor='#99FF99'>" . $i . "</td>"; for( $j=1; $j<=9; $j++ ){ $atai = $i * $j; echo "<td>" . $atai . "</td>"; } echo "</tr>\n"; } ?>

    • 締切済み
    • PHP
  • ループ処理について

    テキストファイルにある数字が存在するかしないかの判断をしたいですがうまくいきません、どこが悪いのでしょうか・・・。 <?php $log=file("1.txt"); for($i=1;$i<count($log);$i++){ echo"<a href=1.php?no=$i>$i</a> ";} echo"<BR><BR><BR><BR><BR>"; if ($_GET["no"]) { $no = $_GET["no"]; $log=file("1.txt"); for($i=0;$i<count($log);$i++){ $list=explode("<>",$log[$i]); if($no==$list[1]){echo"$list[0]"."はOk<BR>";} elseif($no!=$list[1]){echo"";} } if($no!=$list[1]){echo"存在しません";} } ?> 1.txtの中身は 7<>7<> 8<>7<> 5<>5<> 6<>5<> 3<>3<> 4<>3<> 1<>1<> 2<>1<> 右の数字(7・5・3・1)が存在確認対象で、 ?no=数字で呼び出し、getでの呼び出し数字が右に存在すれば左の数字を表示します。 存在しなかったら 存在しません という言葉を1回だけ表示します。 no=1とno=2 no=4 no=6だけ上手くいくのですが、他はokと存在しませんが両方混在してしまいます。no=3 5 7も1 2のようにしたいのですが、 どう記述すれば上手い具合にいくでしょうか? よろしくお願い致します。

    • 締切済み
    • PHP
  • 3の倍数行まで1から数字を挿入し,カウントアップしていく方法

    よろしくお願いします.タイトル通り「3の倍数行まで1から数字を挿入し,カウントアップしていく方法」をテキストファイルで処理したいと思っています. 具体的にインプットとアウトプットは以下のようにしたいです. input.txt ----------------- a b c d e f g h i ・ ・ ・ ・ ・ output.txt ----------------- a,1 b,1 c,1 d,2 e,2 f,2 g,3 h,3 i,3 ・,4 ・,4 ・,4 ・,5 ・,5 perlでのファイルの読み込ませ方は理解していますので 読み込んで出力するまでの処理を教えていただけないでしょうか. よろしくお願いします.

    • ベストアンサー
    • Perl

専門家に質問してみよう