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

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

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

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

Q&A

解決済

2回答

888閲覧

税込み金額が表示されません。

Kei_Mori

総合スコア3

PHP

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

0グッド

0クリップ

投稿2021/05/24 00:17

編集2021/05/24 03:07

前提・実現したいこと

プログラミング初心者です。PHP(AWS Cloud9)にて税込み金額を計算するプログラムを作成していたところ、以下のようなエラーメッセージが表示されました。

###エラーメッセージ

PHP Parse error: syntax error, unexpected 'public' (T_PUBLIC), expecting ',' or ';' in /home/ec2-user/environment/Tax.php on line 8

該当のソースコード

<?php class Tax { public $price = 100; public $rate = 10; public $Taxin = $price * $rate public function in(){ echo '税込み金額は{$Taxin}円です。'.PHP_EOL; } } $clc = new Tax(); $clc ->in();

試したこと

8行目周辺を中心にコードの書き直しや',()等の記号のチェックを行いました。
また、9行目をecho'税込み金額は.$price*$rate.'円です'としたところ
税込み金額は0円です と計算が正しく行われませんでした。
調べる中で8行目のpublicがいらないかもしれないと思い、消してみたら8行目functionに同じエラーが表示されました。ここに本当にアクセス修飾子をつけてはいけないのか、ということについても分かりやすく教えていただけたら幸いです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2021/05/24 02:46

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

2021/05/24 03:03

```でコードを囲むんですね、ありがとうございます。初めての質問投稿だったので次回以降試してみます。
guest

回答2

0

ベストアンサー

6行目にセミコロンがないのが原因では?

投稿2021/05/24 00:30

ex025

総合スコア179

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

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

Kei_Mori

2021/05/24 02:56

回答ありがとうございます。 セミコロンを付けなおしたところ、 Constant expression contains invalid operations in /home/ec2-user/environment/Tax.php on line 6 と別のエラーが表示されてしまうのですが、定数の定義の仕方が間違っているということでしょうか?
ex025

2021/05/24 03:58

クラスプロパティの値には、動的な値を代入することができないようです。 https://qiita.com/H40831/items/15ebfbf7d9c05001b6df __construct()という、クラスを作成したときに自動的に実行される関数に、代入処理を記述しましょう。
Kei_Mori

2021/05/24 06:44

__constructについて、先ほどから自分で調べているのですが、各サイトに記載されているサンプルコードよりも自分のコードの方が行数が多く、それを踏まえたうえで色々代入を試してみたのですがエラーが続いてしまい結局__construct(){}に何を代入すればいいのかが分かりません、もしかしたら__constructの使い方が間違っているのかもしれません。 $clc以降の2行は何も変えなくていいのか? このコードの場合の__constructの記載の仕方の2つを教えていただきたいです。
ex025

2021/05/24 06:55

$clc以降は変えなくていいです。__constructは「new TAX()」を実行した際に自動的に実行される関数です。 public function __construct(){ $this->Taxin = $this->price * $this->rate; }
ex025

2021/05/24 06:57

ちなみに、PHPのクラスの中で変数にアクセスするときは、$Taxin のような書き方ではアクセスできません。$this->Taxinを使いましょう。 詳しくはスコープについて調べてください。
Kei_Mori

2022/08/29 21:34

お返事遅くなってしまい申し訳ございませんでした。 一度挫折してしまったのですが再度学習を再開し始め、以下のコードで解決しました。 ご教授頂きありがとうございました。 <?php class Tax { public $price = 100; public $rate = 10; public function __construct(){ $this->Taxin = $this->price +$this->price* $this->rate/100; } public function in(){ echo "税込み金額は".$this->Taxin."円です。".PHP_EOL; } } $clc = new Tax(); $clc ->in(); ?>
guest

0

unexpected:予期しない、意外な
expecting:期待する、予想する

エラー文を日本語訳すると、

予期しない'public' です。/home/ec2-user/environment/Tax.phpの8行目に ','もしくは';'を期待します。

ということで、単純に英単語"public"が現れたからpublicが原因、とは限りませんので、もう少し注意深くエラー文を読むといいかもしれません。

(ちなみに回答は既に出ているのでこちらでは省略します。)

投稿2021/05/24 00:58

yuuyu

総合スコア1139

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

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

Kei_Mori

2021/05/24 02:52

前後の行が原因で該当する行に影響を及ぼしているということですね…!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問