前提・実現したいこと
連想配列とforeach文を利用して、画像のような表を作るコードを知りたいです。
発生している問題・エラーメッセージ
php
エラーメッセージ
該当のソースコード
試したこと
テキストなどを見ても、載っていなくわかりませんでした。
コードを見れば、理解できると思うのでお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/01 20:28 編集
2020/07/02 04:58
2020/07/02 14:45
回答6件
0
効果測定とは、これまでの学習の成果を確認するものであるはず。
ということは、これまで学習してきたことで解答が可能であるものでなければなりません。
そのままは載っていなくても組み合わせれば出来たり、考え方は身に付いている前提であるものです。
つまり、この設問内容で、何一つ分からないということは
コードを見れば、理解できる
ということにはなりえません。
理解できた「気」になるだけです。
もしくはそれを言い訳にして答えだけを欲している丸投げかのどちらかです。
後者でないことを願うばかりですが、いかんせん後者(非推奨質問、ルールもマナーもない質問者)が多くて信じきれない部分は回答者やっているとどうしてもあります。
まぁ、まずは過去の学習内容を見返すところからでしょう。
プログラミングは
1+1=○を解くのではなく
○+△=2を解くものです。*
つまり、1つのゴールに対してルートは1つではない、
無限に近いルートが考えられるわけです。*
考えましょう。
答えだけを得たところで、身に付きません。
*つまり、ゴールを決めてようやく手法が決まるもの。要件定義もなしにまともな実装はできない。
追記:「効果測定の結果」としては「何も手がつかない」のが事実なので、それはそれで白紙で出してもいいんじゃないでしょうか。カリキュラムの見直しを検討する必要があるなら、講師にとっては前向きなフィードバックです。
(あくまでちゃんと講義を受けていることが前提)
投稿2020/07/01 13:56
編集2020/07/01 14:03総合スコア80875
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/01 14:06
2020/07/01 14:20
2020/07/01 14:30
2020/07/02 00:41
2020/07/02 01:37
2020/07/02 02:41
2020/07/02 14:37
2020/07/03 13:38 編集
2020/07/04 02:02 編集
2020/07/04 02:05
0
連想配列と foreach を利用して、文字列加工を中心にコードを組み上げてみました。
流石に全部回答するのはアレなので、table の style の調整は残しています。
参考になれば。
php
1<?php 2$origin = [ 3 "title" => "和風月名(わふうげつめい) | 日本の暦", 4 "url" => "https://www.ndl.go.jp/koyomi/chapter3/s8.html", 5 "sourc" => "国立国会図書館ウェブサイトより", 6]; 7$page = file_get_contents($origin["url"]); 8preg_match("/<table[\S\s]*?</table>/u", $page, $table); 9$table = $table[0]; 10preg_match_all("/<td>.*?</td>/u", $table, $del_td); 11preg_match_all("/(<br />\n|)(.*?)/u", $table, $del_kana); 12preg_match_all("/<caption>.*?</caption>/u", $table, $del_caption); 13preg_match('/<tr> 14<td class=\"season\">7月[\S\s]*</tr>/u', $table, $del_tr); 15$del_lists = array_merge($del_tr, $del_td[0], $del_kana[0], $del_caption[0]); 16foreach($del_lists as $del_list){ 17 $table = str_replace($del_list, "", $table); 18} 19$th_org = '<th scope="col" class="word">旧暦の月</th> 20<th scope="col">和風月名</th> 21<th scope="col">由来と解説</th> 22'; 23$th_rep = '<th scope="col">月</th><th scope="col">旧暦の月名</th>'; 24$table = str_replace($th_org, $th_rep, $table); 25echo $table;
投稿2020/07/01 23:02
編集2020/07/01 23:07退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/01 23:30
退会済みユーザー
2020/07/02 00:09
2020/07/02 03:30
0
正直ロジックは簡潔な方かと。。
仕様としては、配列$ary
に1月、2月、3月、、、に対応する様に旧暦の月名が入っています。
今回使用した配列は連想配列ではない
なのですが、キーが0からの連番で割り振られることを利用して以下の関係式を利用しました。
キー + 1 = 旧暦の月名の月
(キーなんか使わなくてもループで1足していけばいいじゃんと思う方もいることと思いますが、配列を理解してるんだということを先生に間接的に伝えるためのものだと思ってください。)
補足
この配列を理解できるのであれば、連想配列にすることは簡単なはずです。
コードを見れば理解できると記載されていましたので、連想配列にするところはご自身で
PHP
1<?php 2$ary = ["睦月", "如月", "弥生", "卯月", "皐月", "水無月",]; 3?> 4 5<table border="1" style="border-collapse: collapse"> 6 <tr> 7 <th>月</th> 8 <th>旧暦の月名</th> 9 </tr> 10 <?php foreach ($ary as $key => $value) { ?> 11 <tr> 12 <td><?=++$key.'月' ?></td> 13 <td><?=$value ?></td> 14 </tr> 15 <?php } ?> 16</table>
投稿2020/07/04 17:57
編集2020/07/05 17:44総合スコア2076
0
要件:
連想配列とforeach文を利用して、レイアウトのとおりテーブルを作成するこ
<table>タグの利用が必要となります- PHP
- 連想配列とforeachを使う
- 図のレイアウトを作成する
- tableタグを使う
- PHPのバージョン自由
- 実行の方法は自由
- tableタグと連想配列とforeachが利用してあればあとはどんな手法を使ってでも図を再現すれば良し
- 要件さえ満たせていればコードの可読性は不問
- 仕様変更の考慮は不要 ←New
という
非常に自由度の高く多種多様な解釈が可能なお題のようなので、作ってみました。
※質問者がどういうテキストで講義を受けてきたのか知りませんし全く考慮してません
※質問者の今後は全く考慮してません
※出オチ
php
1<?php 2define('PE',PHP_EOL);define('T',true);define('F',false);define('H','H');define('A','A');define('J','J');define('JM','JM');define('C',[H,A,J,JM]); 3class e{private $s;function __construct($s){$this->s=$s;}function o(){echo $this->s;}} 4function e($s){if(in_array($s,C)){return;}else{$e=new e($s);$e->o();}} 5$r = [ 6 '┏' => ['━','━','━','━','━','┯','━','━','━','━','━','━','━','┓' ], 7 '┃' => ['H',' ',' ','月',' ',' ','│',' ','旧','暦','の','月','名',' ','┃'], 8 '┠' => ['─','─','─','─','─','┼','─','─','─','─','─','─','─','┨'], 9 '' => ['┃','A',' ',' ','1','月',' ',' ','│','J',' ',' ',' ','睦','月',' ',' ',' ','┃' 10 ,PE,'┠','─','─','─','─','─','┼','─','─','─','─','─','─','─','┨' 11 ,PE,'┃','A',' ',' ','2','月',' ',' ','│','J',' ',' ',' ','如','月',' ',' ',' ','┃' 12 ,PE,'┠','─','─','─','─','─','┼','─','─','─','─','─','─','─','┨' 13 ,PE,'┃','A',' ',' ','3','月',' ',' ','│','J',' ',' ',' ','弥','生',' ',' ',' ','┃' 14 ,PE,'┠','─','─','─','─','─','┼','─','─','─','─','─','─','─','┨' 15 ,PE,'┃','A',' ',' ','4','月',' ',' ','│','J',' ',' ',' ','卯','月',' ',' ',' ','┃' 16 ,PE,'┠','─','─','─','─','─','┼','─','─','─','─','─','─','─','┨' 17 ,PE,'┃','A',' ',' ','5','月',' ',' ','│','J',' ',' ',' ','皐','月',' ',' ',' ','┃' 18 ,PE,'┠','─','─','─','─','─','┼','─','─','─','─','─','─','─','┨' 19 ,PE,'┃','A',' ',' ','6','月',' ',' ','│','JM',' ',' ','水','無','月',' ',' ','┃' 20 ,PE,'┗','━','━','━','━','━','┷','━','━','━','━','━','━','━','┛' ] 21]; 22$f=(php_sapi_name()==='cli')?T:F;$cs=''; 23if (! $f) {e('<!DOCTYPE html><html><head><title>from teratail</title><style>*{line-height:1;}span{display:inline-block;}span.H{padding-left:8px;padding-right:8px;}span.A{padding-left:6px;padding-right:6px;}span.J{padding-left:6.65px;padding-right:6.65px;}span.JM{padding-left:8px;padding-right:8px;}</style></head><body><table><tbody><tr><td>');} 24foreach ($r as $k => $v) {e($k); 25 foreach ($v as $c) { 26 if ($f) {e($c); } else { if(empty($cs)){$cs=(in_array($c,C))?$c:'';}else{ (in_array($c,C))?$cs=$c:'';} 27 if ($c === PE) { e('<br />');} else if (ctype_space($c)||$c===' ') {e('<span class='.$cs.'></span>');} else {e($c);}} 28 }if($f){e(PE);}else{e('<br />');}} 29if (!$f){e('</td></tr></tbody></table></body></html>');} 30 31
ちなみに次点:
php
1<?php 2foreach(["a"=>"b"]as$c){} 3?> 4<table><td><img src="hoge.png"></td></table>
投稿2020/07/02 14:35
編集2020/07/02 14:49総合スコア80875
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/02 14:41
2020/07/02 14:46
2020/07/02 14:48
2020/07/02 15:00
2020/07/02 17:38
2020/07/02 22:37
0
php
1<?php 2$incr = array( 3 'target' => 'months', 4 'initmodel' => '<tr> 5 <th>月</th> 6 <th>旧歴の月名</th> 7 </tr>' 8); 9 10$months = array( 11 '睦月', 12 '如月', 13 '弥生', 14 '卯月', 15 '皐月', 16 '水無月' 17); 18 19?> 20 21<table id="<?php echo $incr['target']; ?>"> 22<?php echo $incr['initmodel']; ?> 23</table> 24 25<script> 26const monthTable = document.getElementById('<?php echo $incr['target']; ?>'); 27const insertFunc = (index, month) => { 28 const row = monthTable.insertRow(); 29 row.insertCell().textContent = `${index + 1}月`; 30 row.insertCell().textContent = month; 31}; 32 33<?php foreach($months as $i => $month) { ?> 34insertFunc(<?php echo $i; ?>, <?php echo $month; ?>); 35<?php } ?> 36</script>
投稿2020/07/02 03:08
編集2020/07/02 03:54総合スコア9555
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/02 03:09
2020/07/02 03:32
2020/07/02 03:55
2020/07/02 14:39
2020/07/02 14:44
2020/07/02 17:03
0
なんか。いい案思いつかないので。
PHP
1<?php 2$numbers = [ 3 1, 2, 3, 4, 5, 6 4]; 5 6foreach($numbers as $number){ 7 if(!isset($random)){ 8 $random = ''; 9 } 10 $random .= random_bytes(10000000000); 11} 12 13foreach($numbers as $number){ 14 if(!isset($monthes)){ 15 $monthes = ''; 16 } 17 $monthes .= $number . "月" . $random; 18} 19 20foreach($numbers as $number){ 21 if(!isset($japanese)){ 22 $japanese = ''; 23 } 24 $japanese .= (( $number == 1 ) ? '睦月' : (( $number == 2 ) ? '如月' : (( $number == 3 ) ? '弥生' : (( $number == 4 ) ? '卯月' : (( $number == 5 ) ? '皐月' : (( $number == 6 ) ? '水無月' : 'こんな数字知らね' )))))).$random; 25} 26 27echo '<table>'; 28foreach($numbers as $number){ 29 echo '<tr>'; 30 echo '<td>'.explode($random, $monthes)[$number-1].'</td>'; 31 echo '<td>'. explode($random, $japanese)[$number-1].'</td>'; 32 echo '</tr>'; 33} 34echo '</table>';
投稿2020/07/03 02:41
編集2020/07/03 02:59総合スコア10429
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/03 02:41
2020/07/03 02:43
2020/07/03 02:44
2020/07/03 02:45 編集
2020/07/03 02:46
2020/07/03 02:49
2020/07/03 02:57 編集
2020/07/03 02:57
2020/07/03 02:59
2020/07/03 03:01
2020/07/03 03:08 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。