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

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

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

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

Q&A

解決済

1回答

1454閲覧

配列をテーブルに表示するメソッドを

skyler1230

総合スコア1

PHP

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

0グッド

0クリップ

投稿2020/11/03 04:38

編集2020/11/03 09:45

プログラミング初心者です。クラスと配列についての質問です。

選手名チーム名ポジション
山田赤チームFW
鈴木青チームMF
佐藤黄チームMF

このようにテーブルに表示させたいのですが、<td></td>には何を記述すればよいのでしょうか?
その他ミスなどがありましたら教えてください。

php

1<?php 2 3class Player{ 4 5 public $name; 6 public $list; 7 8 function __construct(){ 9 $this -> list = array(); 10 } 11 12 function plist($name){ 13 $this -> list[] = $name; 14 } 15 function soccer(){ 16$lat = "<table border = \"1\"> 17<thead> 18 <tr> 19 <th>選手名</th> 20 <th>チーム名</th> 21 <th>ポジション</th> 22 </tr> 23 </thead> 24 <tr> 25 <td></td> 26 <td></td> 27 <td></td> 28 </tr> 29</table>"; 30 return($lat); 31 32 } 33} 34 35class Profile{ 36 public $name; 37 public $team; 38 public $pos; 39 function __construct($name, $team, $pos){ 40 $this -> name = $name; 41 $this -> team = $team; 42 $this -> pos = $pos; 43 } 44} 45 46 47$sample = new Player(); 48$sample -> plist(new Profile("山田", "赤チーム", "FW")); 49$sample -> plist(new Profile("鈴木", "青チーム", "MF")); 50$sample -> plist(new Profile("佐藤", "黄チーム", "MF")); 51 52echo($sample->soccer()); 53 54?>

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

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

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

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

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

tanat

2020/11/03 07:46

最終的に出力しようとしているテーブルのHTMLは理解している状態ですか?
m.ts10806

2020/11/03 08:18

コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 あと、変数も情報を保管している箱にすぎないので、取り出すだけでは。 何が分からないのでしょう。 ミス以前に、書いてないので「そりゃ何も出ないよね」となるだけです。
skyler1230

2020/11/03 08:33

取り出し方がよくわからないのです。わざと書いていません。 どのように取り出すか教えていただきたいです。 クラスや配列が加わると取り出し方がいまいちわかりません。
m.ts10806

2020/11/03 08:36

(質問は編集できます)コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 あと、PHPマニュアルで解決できます。 このclassを自分で組んだのでしたら、できます。 プロパティの参照です。 もし、自分で組んだわけではないのでしたら、「クラスの基礎」あたりからやっておかないと、今後ちょっとしたことで質問しないといけなくなりますし身に付きません。 https://www.php.net/manual/ja/language.oop5.basic.php
skyler1230

2020/11/03 09:31

クラスはまだやり始めで、まだ理解の部分が足りていない部分があります。このコードは一応自分でつくったものですが、動画やネットを見ながらつくったものです。 回答と一緒に解説もくださると幸いです。
m.ts10806

2020/11/03 09:33

なるほど。でも提示のコードコピペだとそもそもSyntax Errorが出ます。 クォートの閉じ忘れです。 $sample -> plist(new Profile("山田, "赤チーム, "FW")); マークダウンのcodeでシンタックスハイライトされて色が変わっているので見えると思います。実際の自身の開発でもIDEは使ったほうが良いです。
skyler1230

2020/11/03 09:45

ありがとうございます。訂正しました。
guest

回答1

0

ベストアンサー

プロパティの値の設定および取得 からおさえてください。
コンストラクタ含め、「設定」はできているので、同じように「参照」するだけです。
アロー演算子(->)が使われていうだけで、基本的に変数です。
変数の参照と変わりません。

コードを見た感じProfile()をnewするときにリストを作っていっているようですね。
ということは、コードの通り、一覧情報はPlayer::plist()を実行することで作られていっています。
plist()の実装は下記ですね。

php

1 function plist($name){ 2 $this -> list[] = $name; 3 }

Player::$listに追加していっていることが分かります

var_dump()を入れることで「何を保存しているか」が見えます。

php

1 function plist($name){ 2 var_dump($name); 3 $this -> list[] = $name; 4 }

出力に使っているであろうsoccer();で対象の情報を確認して取り出すだけです。

php

1 2 function soccer(){ 3 4 var_dump($this -> list ); 5

配列のようなので、foreachがやりやすいと思います。

例:

php

1 function soccer(){ 2 $lat = "<table border = \"1\"> 3 <thead> 4 <tr> 5 <th>選手名</th> 6 <th>チーム名</th> 7 <th>ポジション</th> 8 </tr> 9 </thead> 10 "; 11 foreach($this->list as $profile){ 12 $lat .= " 13 <tr> 14 <td>".$profile->name."</td> 15 <td>".$profile->team."</td> 16 <td>".$profile->pos."</td> 17 </tr> 18 "; 19 } 20 21 $lat .= " 22 </table>"; 23 return($lat); 24

ただこれも既にコメントで確認が入っているように「どういうHTMLになるか」が見えてないと法則性も何もないので、ループを使うという発想も出てきません。
まずはHTMLだけ組んで、そこから「どう組んだら出力できるか」を考えましょう。

投稿2020/11/03 09:46

編集2020/11/03 10:03
m.ts10806

総合スコア80861

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

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

skyler1230

2020/11/03 10:02

ありがとうございます。初心者に対してこのように丁寧に対応してくださる方がいて、感動しました。本当にありがとうございました。ここから勉強を頑張りたいと思います。
m.ts10806

2020/11/03 10:04

末尾に追記しました。 ブラウザから参照する仕組みを作っている以上は、画面レイアウトイメージをHTMLで作ってからそのイメージをどうやって実現するかを考える必要があります。
skyler1230

2020/11/03 10:09

わかりました。動画やサイトだけでは厳しいですね。自分でいろいろと練習、勉強を重ねていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問