質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

798閲覧

phpにて、数列のcountをするにはどのようにプログラムすればいいのでしょうか?

Domy

総合スコア5

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2021/01/04 13:33

<?php echo <<< EOF <html> <head> <meta charset="UTF-8"> <title>PHP</title> </head> <body> <table border="1"> <tr> EOF; for($i = 1; $i <=1000; $i++){ if($i % 30 === 0){ echo "T,S,\n"; }elseif($i % 5 === 0){ echo "T\n"; }elseif($i % 3 === 0){ echo "S\n"; }else{ echo "$i\n"; } } echo <<< EOF </tr> </table> </body> </html> EOF; ?>

このようなhtmlを含むphpの数列を作りました。

・この数列の中で3の倍数、5の倍数、30の倍数の個数をカウントしたいのですが、どのようにすればいいのかわかりません。
助言をくださるとありがたいと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2021/01/04 14:31

今書かれているコードについては理解できていますか?
Domy

2021/01/04 14:32

大体は理解できています
tanat

2021/01/04 15:05

理解出来ていないところは何処でしょう? たとえば、変数の概念や使い方、コード中で使われている変数がどのように変化しているかは把握されていますか?
Domy

2021/01/04 15:08

ご指摘された点を踏まえて、このようにやってみたのですが、、、 while($count < 1){ $arr=array("$i%30 === 0"); $cnt=count($arr); for($i = 1; $i <=100; $i++){ if($i % 30 === 0){ echo "T,S,\n"; }elseif($i % 5 === 0){ echo "T\n"; }elseif($i % 3 === 0){ echo "S\n"; $count++; }else{ echo "$i\n"; } } } echo $count,"\n"; 一部ですが、 上手くできないですね。
tanat

2021/01/04 15:14 編集

あ、指摘をしたい訳でも責めてる訳でもなく、 どこが分かっていてどこが分かっていないかが明確にならないと答えそのもののコードを提示する以外に無くなるので聞いています。 (この質問で答えをそのまま書くのはteratailの趣旨に反すると考えています。) コードの中で1行でも説明出来ない、理解に自信が無いところがあれば質問に追記して下さい
Domy

2021/01/04 15:30

簡単な数列やループ(whileやif、for)などは理解していると思っています。 その中で、数列の一部をカウントするなど、ループ中のどこにいれていいのかよくわかっていない状態です。 まだ、phpのほとんどはわかっていないですね。
m.ts10806

2021/01/04 22:23

コードはマークダウンのcode機能にてご提示ください
m.ts10806

2021/01/04 22:25

質問は編集できます。 tanatさんも「質問に追記してください」とコメントされてます。 こちらは質問への追記修正依頼のコメント欄です。基本的には質問本文を編集して返してください
guest

回答1

0

ベストアンサー

基本的には、カウント用の変数を0で初期化して用意し、
echo文の箇所で変数を++(インクリメント)するだけです。
もちろん、3パターンそれぞれでカウントするためには、変数が3つ必要ですよね。

それと、elseifを使う場合と単にifを使う場合とで
意味合いが変わってしまうところもあるので、
ズバリ書き直してみました。

php

1<?php 2echo <<< EOF 3<html> 4<head> 5<meta charset="UTF-8"> 6<title>PHP</title> 7</head> 8<body> 9<table border="1"> 10<tr> 11EOF; 12 13// 変数の初期化は、主な処理が始まる前にやる 14$count_30 = 0; 15$count_5 = 0; 16$count_3 = 0; 17 18for ($i = 1; $i <=1000; $i++) { 19 if ($i % 30 === 0) { // 30の倍数であることを確認したときの処理がここだから 20 echo "T,S,\n"; 21 $count_30++; // 30の倍数用カウンターを+1 22 } elseif ($i % 5 === 0) { // 30の倍数でなく5の倍数であることを確認したときの処理がここだから 23 echo "T\n"; 24 $count_5++; // 5の倍数用カウンターを+1 25 } elseif ($i % 3 === 0) { // 30の倍数でなく5の倍数でもなく3の倍数であることを確認したときの処理がここだから 26 echo "S\n"; 27 $count_3++; // 3の倍数用カウンターを+1 28 } else { 29 echo "$i\n"; 30 } 31 32 if ($i % 30 === 0) { // 30の倍数であることを確認したときの処理がここだから 33 $count_30++; // 30の倍数用カウンターを+1 34 } 35 if ($i % 5 === 0) { // 5の倍数であることを確認したときの処理がここだから 36 $count_5++; // 5の倍数用カウンターを+1 37 } 38 if ($i % 3 === 0) { // 3の倍数であることを確認したときの処理がここだから 39 $count_3++; // 3の倍数用カウンターを+1 40 } 41} 42 43// カウントした結果を出力するなら、主な処理が終わった後にやる 44echo $count_30 . "\n"; 45echo $count_5 . "\n"; 46echo $count_3 . "\n"; 47 48echo <<< EOF 49</tr> 50</table> 51</body> 52</html> 53EOF; 54

と認識しました。

投稿2021/01/04 13:53

編集2021/01/05 00:40
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Domy

2021/01/04 14:11

どういうことでしょうか。すみません、よくわかっていないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問