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

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

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

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

Q&A

解決済

2回答

1294閲覧

最大値を取り出したい

hirororo

総合スコア72

PHP

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

0グッド

0クリップ

投稿2017/02/08 18:39

編集2017/02/08 23:07

いつもこちらのサイトではお世話になっております。

度々ですが、phpで作る計算ツールについて、質問させて下さい。

以下のコードで、$twrの最大値を取り出したいのですが、
max関数を使ったところ、正しく最大値を取り出せませんでした。

max関数を使う他に、最大値を取り出す方法はありますでしょうか?

どうぞよろしくお願い申し上げます。

<?php $a = 600; $d = 100; $b=0.01; while($b<=1){ $c=bcdiv("$a","$b","12"); $cc=$c; $e=bcadd("$d","$cc","12"); $y=bcdiv("$e","$cc","12"); $x=bcmul("$y","$d","12"); $f=bcadd("$x","$e","12"); $twr=bcdiv("$f","$cc","12"); $b=bcadd("$b","0.01","12"); } echo "max($twr)"; ?>

■環境 
レンタルサーバー(ロリポップ)に、phpファイルをアップし、ブラウザで閲覧する形で、ツールを作っております。

■補足
・「$aと$dは本来、POSTにより数値の状態で受け取る」

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

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

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

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

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

Zuishin

2017/02/08 22:46

twr には何が入っていて結果どうなるんですか?
hirororo

2017/02/08 23:06

twrには、while文の計算結果が入ります。twrが算出された後、trwの中で最も高い数値を1つ取り出したいと思っております。
guest

回答2

0

maxで最大値を出すというのはこういうことでしょうか。

PHP

1$res = array(); 2$a = '600'; 3$d = '100'; 4$b = '0.01'; 5 6while ( $b <= 1 ) { 7 $c = bcdiv( $a, $b, 12 ); 8 $cc = $c; 9 $e = bcadd( $d, $cc, 12 ); 10 $y = bcdiv( $e, $cc, 12 ); 11 $x = bcmul( $y, $d, 12 ); 12 $f = bcadd( $x, $e, 12 ); 13 $twr = bcdiv( $f, $cc, 12 ); 14 $b = bcadd( $b, '0.01', 12 ); 15 $res[] = $twr; 16 echo $twr."\n"; 17} 18echo 'max:'.max( $res );
// 結果 1.003336111111 1.006677777777 1.010025000000 1.013377777777 1.016736111111 1.020100000000 1.023469444444 1.026844444444 1.030225000000 1.033611111111 1.037002777777 1.040400000000 1.043802777777 1.047211111111 1.050625000000 1.054044444444 1.057469444444 1.060900000000 1.064336111111 1.067777777777 1.071225000000 1.074677777777 1.078136111111 1.081600000000 1.085069444444 1.088544444444 1.092025000000 1.095511111111 1.099002777777 1.102500000000 1.106002777777 1.109511111111 1.113025000000 1.116544444444 1.120069444444 1.123600000000 1.127136111111 1.130677777777 1.134225000000 1.137777777777 1.141336111111 1.144900000000 1.148469444444 1.152044444444 1.155625000000 1.159211111111 1.162802777777 1.166400000000 1.170002777777 1.173611111111 1.177225000000 1.180844444444 1.184469444444 1.188100000000 1.191736111111 1.195377777777 1.199025000000 1.202677777777 1.206336111111 1.210000000000 1.213669444444 1.217344444444 1.221025000000 1.224711111111 1.228402777777 1.232100000000 1.235802777777 1.239511111111 1.243225000000 1.246944444444 1.250669444444 1.254400000000 1.258136111111 1.261877777777 1.265625000000 1.269377777777 1.273136111111 1.276900000000 1.280669444444 1.284444444444 1.288225000000 1.292011111111 1.295802777777 1.299600000000 1.303402777777 1.307211111111 1.311025000000 1.314844444444 1.318669444444 1.322500000000 1.326336111111 1.330177777777 1.334025000000 1.337877777777 1.341736111111 1.345600000000 1.349469444444 1.353344444444 1.357225000000 1.361111111111 max:1.361111111111

【PHP: max - Manual】
http://php.net/manual/ja/function.max.php

投稿2017/02/08 23:09

kei344

総合スコア69398

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

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

hirororo

2017/02/08 23:23 編集

いつもありがとうございます! おっしゃる通りです。 配列にするとコードが整いますね。
guest

0

自己解決

自己解決出来ました。
ありがとうございます。

解決方法は以下になります。

echo "max($twr)";

こちらの位置を
下から3番目→下から2番目に一段ズラしました。

投稿2017/02/08 23:15

hirororo

総合スコア72

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

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

kei344

2017/02/08 23:20

それはmax関数を使っていませんよ?
kei344

2017/02/08 23:26

コメントへの返答が私の回答に書かれているようですが、そういう意味ではなく、 echo "max($twr)"; は文字列として「max($twrの中身)」が出力されているだけで、max()を関数としては使っていませんよ、ということなのですが。
hirororo

2017/02/08 23:43 編集

そうなのですか、配列にしてないからでしょうか?
kei344

2017/02/08 23:32

この二つの実行結果は違うものになる、ということです。(前者はエラーになりますが) echo max( $twr ); echo "max($twr)";
hirororo

2017/02/08 23:45 編集

max()を関数として使っていないこと、理解出来ました。ありがとうございます。 算出された$twrの中身の最大値を取り出したいと思っておりましたので、こちらで大丈夫かと思っておりますが、kei344様に送って頂いた方法で実装させて頂きます。
kei344

2017/02/08 23:51

> こちらで大丈夫 書かれた自己解決方法であれば下記のように出力されるだけですが、「大丈夫」なのですか? max(1.003336111111)max(1.006677777777)max(1.010025000000)max(1.013377777777)max(1.016736111111....44)max(1.357225000000)max(1.361111111111)
hirororo

2017/02/09 00:14

kei344様がおっしゃって頂いたように関数maxを正しく使う必要がありますね。 自己解決方法は間違っておりました。 的確なご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問