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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

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

Q&A

解決済

2回答

434閲覧

PHP|商品を内税と外税に条件分岐させたい

退会済みユーザー

退会済みユーザー

総合スコア0

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

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

0グッド

0クリップ

投稿2020/01/30 03:54

編集2020/01/31 03:47

前提・実現したいこと

商品の税をフラグで内税外税にif文で条件分岐させたいです。

こちら(https://teratail.com/questions/183532)を参考にある程度は、当方の条件に合うように作成いたしました。

$included = falseとあり、この部分がフラグということは分かりますが、
それをどのような式でtrue or falseに分岐させるのかが、いまいちよく分かりません。

ソースコード

php

1<?php 2 class Item { 3 private $taxRate = 0.08; 4 //public $price; 5 //public $included = false; 6 7 public function __construct ( int $price, $included = false ) { 8 $this->price = $price; 9 $this->included = $included; 10 } 11 12 public function tax():int { 13 if ( $included ) { // true = 内税 14 return $this->price * $this->taxRate; 15 } else { // false = 外税 16 return $this->price + ( $this->price * $this->taxRate ); 17 } 18 } 19 } 20 $item = new Item( 100 );// ( "価格", "flag" ) 21 echo $item->tax().PHP_EOL; 22?>

解答例や解説、アドバイスをいただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

もしかすると、クラスというものがよく分からないということでしょうか。
クラスにはメンバ変数と呼ばれる変数を持つことができます。
記載したソースコードでいうと、private $taxRate = 0.08; はメンバ変数にあたります。
メンバ変数はクラス内の関数で共有しています。
例えばコンストラクタ(__construct 関数のことです)で設定した値を、tax 関数で使う事ができます。

内税と外税にif文で条件分岐とのことですので、
コンストラクタで、メンバ変数の included に設定し、
tax 関数でメンバ変数の inclueded を使用して判定すれば良いかと思います。
コンストラクタは記載通りでよいかと思いますが、
tax 関数に記載してあるは if ( $included ) { だと、ローカル変数になってしまうので
$this-> を付けてメンバ変数を指すようにする必要があります。

多分、気がついているかもしれませんが、Item クラスで、

//public $included = false;

とメンバ変数がコメントアウトしてあるので、// を消してあげる必要があります。

投稿2020/01/30 04:18

QZX

総合スコア44

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

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

退会済みユーザー

退会済みユーザー

2020/01/30 05:08

To: QZXさん ありがとうございます。 $this->を見落としてました。 メンバ変数を持たせても変化がなかったので、コメントアウトしてしまっていました、、、
guest

0

ベストアンサー

newのときに第2引数にt/f送るだけでは

追記

php

1<?php 2 class Item { 3 private $taxRate = 0.08; 4 //public $price; //コメントアウトはずす 5 //public $included = false;//コメントアウトはずす 6 7 public function __construct ( int $price, $included = false ) { 8 $this->price = $price; 9 $this->included = $included; 10 } 11 12 public function tax():int { 13 if ( $included ) { // true = 内税 $this->included に変更 14 return $this->price * $this->taxRate; 15 } else { // false = 外税 16 return $this->price + ( $this->price * $this->taxRate ); 17 } 18 } 19 }

PHPマニュアルも参考にしてください。

投稿2020/01/30 03:58

編集2020/01/30 04:23
m.ts10806

総合スコア80850

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

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

退会済みユーザー

退会済みユーザー

2020/01/30 04:09

式はこのままでよく、 $item = new Item( 100, true ); or $item = new Item( 100, false ); ということでしょうか?
kei344

2020/01/30 04:12

To: m.ts10806さん その値を判定に使っていないのでは。
m.ts10806

2020/01/30 04:16

kei344さん あ、分かりました。 dai_zさん 回答に追記しますので少々お待ちを。
退会済みユーザー

退会済みユーザー

2020/01/30 05:02

To: m.ts10806さん ありがとうございます。 無事にできました。 class内では、必ず$this->でメンバ変数を示すのですね。 すっかり見落としてました。
m.ts10806

2020/01/30 05:05

質問のコードだと何かしらエラーは出ると思いますし、コーディングにIDEを使えばそれも一目瞭然かと思います。 エラーをよく読み、PHPマニュアルで仕様を確認し、デバッグをすることで自分で解決できるようになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問