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

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

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

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

Q&A

解決済

2回答

3096閲覧

PHP メソッドの呼び出し

t-i

総合スコア16

PHP

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

0グッド

0クリップ

投稿2019/08/07 12:55

//クラス定義 class zodiac_signs { //プロパティ private $animals1 = array('子', '丑', '寅', '卯'); private $animals2 = array('辰', '巳', '午', '未'); private $animals3 = array('申', '酉', '戌', '亥'); private $animals = array($animals1, $animals2, $animals3); //メソッド定義 public function foreach($animals as $val) { echo $animals[0][0].$animals[0][1].$animals[0][2].$animals[0][3].'<br />'; } //メソッド定義 public function foreach($animals as $val) { echo $val[0].$val[1].$val[2].$val[3]; } }

すみませんメソッドで呼び出しのですが、上手く呼び出されません。
アドバイス頂けないでしょうか?

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/08/07 13:18

そもそもメソッド定義の文法がおかしいので、呼び出す方法なんてないと思いますが。
guest

回答2

0

https://www.php.net/manual/ja/functions.user-defined.php
ここに書いてある様に関数の定義の仕方を見てもらえるとわかると思うのですが。

php

1public function 関数名 { 2//処理 3}

で最初にメソッドを正しく定義。

クラスのプロパティーの呼び方も修正して。この場合こんな感じになると思います。

php

1$this->animals;

最後に呼び出しをできます。

php

1$obj = new zodiac_signs(); 2$obj->関数名();

参考までにこちらもどうぞ
https://qiita.com/mpyw/items/41230bec5c02142ae691

投稿2019/08/07 13:40

mipopon

総合スコア38

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

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

0

ベストアンサー

どんな仕様を求めているのか分からないのでなんとなく。
ヒントになりますでしょうか。

【修正】色々見直さずにコピペだけで書こうとしたのが間違いでした。酷すぎるコードでごめんなさい;; ちゃんと書き直しました。

PHP

1/* 2$zodiac_sings = new zodiac_signs(); 3$zodiac_sings->my_hogehoge();とすると、 4子丑寅卯<br /> 5 6$zodiac_sings->my_foreach();とすると、 7子丑寅卯辰巳午未申酉戌亥 8と出力されます 9*/ 10 11// Your code here! 12class zodiac_signs { 13 14 //プロパティ 15 private $animals1; 16 private $animals2; 17 private $animals3; 18 private $animals; 19 20 //コンストラクターで設定 21 public function __construct() 22 { 23 $this->animals1 = array('子', '丑', '寅', '卯'); 24 $this->animals2 = array('辰', '巳', '午', '未'); 25 $this->animals3 = array('申', '酉', '戌', '亥'); 26 $this->animals = array($this->animals1, $this->animals2, $this->animals3); 27 } 28 29 //メソッド定義 30 public function my_hogehoge() 31 { 32 echo $this->animals[0][0] . $this->animals[0][1] . $this->animals[0][2] . $this->animals[0][3] . '<br>'; 33 } 34 35 //メソッド定義 36 public function my_foreach() 37 { 38 foreach( $this->animals as $val ) { 39 echo $val[0].$val[1].$val[2].$val[3]; 40 } 41 42 } 43 44}

投稿2019/08/07 13:28

編集2019/08/07 23:15
yukikp

総合スコア797

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

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

t-i

2019/08/07 23:03

すみません private $animals = array($animals1, $animals2, $animals3); の所で Fatal error: Constant expression contains invalid operations in C:\xampp\htdocs\php.basic\index.php on line 20 このようなエラーが出てしまいます。
yukikp

2019/08/07 23:15

すみません。あまり中身を水酷いコードを書いてました。ホント恥ずかしい。。。 書き直して、実行して確認しました。
t-i

2019/08/07 23:30

わざわざ修正して頂き、ありがとうございます! すみませんエラーは出なくなったのですが、画面に何も表示されなくなりました。
yukikp

2019/08/07 23:37 編集

それはそうです。クラスを読み込んだだけでは何もしません。 関数だってfunction hogehoge(){ }みたいに書いただけでは何も動かないでしょ? 使うところで、 $result = hogehoge(); って書いてあげる必要がありますよね。 クラスも同じです! 上の方でコメントアウトしたところに書きましたが、 同じファイル上で構いませんが、クラスを定義してるclass zodiac_signs { }の外側で、 $zodiac_sings = new zodiac_signs(); と書いて、クラスをインスタンス化し、それぞれのメソッドを呼び出してください。 例:$zodiac_sings->my_hogehoge();
t-i

2019/08/08 00:03

丁寧なご返信ありがとうございました。 すみません上手く出来ました。 全然理解してなくて申し訳ありません。 もう少し勉強して質問の方もしたいと思います。 今回は本当にありがとうございました。 助かりました。
yukikp

2019/08/08 00:05

クラス・インスタンス化・オブジェクトあたりってプログラムを学習するうえでの一つの山場ですよね~ 頑張ってください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問