前提・実現したいこと
PHPの自作関数で切り捨て、切り上げ、四捨五入をしたいと考えています。
四捨五入の際に関数内関数が使えないかと思っているのですがなかなかうまくいきません。
発生している問題・エラーメッセージ
phpCeil、phpFloorの箇所で
Unexpected 'Name'. Expected '('.//phpCeil、phpFloorの下に波線
Unexpected ','. Expected ';'.//引数のカンマ、後半のかっこに波線
elseの箇所で
Unexpected 'else'. Expected ';'.
のエラーが出ています。
function phpRound($n, $m) { $b = substr($n, $m - ($m - 1)); if($b >= 5){ return function phpCeil($n, $m); }else{ return function phpFloor($n,$m); }
該当のソースコード
全体の構成はこのようになっています。
PHP
1<?php 2echo "<h1>切り捨て・切り上げ・四捨五入</h1>"; 3 4function phpFloor($n, $m) { 5 $a = substr($n,-$m);//$nより$m桁分の数字を取得 6 $roundDown = $n - $a;//切り捨てなので$nより$aを減算する 7 return $roundDown; 8} 9 10function phpCeil($n, $m) { 11 $a = substr($n,-$m);//$nより$m桁分の数字を取得 12 if($a != 0){ 13 $roundUp = $n - $a + (10 ** $m); 14 return $roundUp; 15 }else{ 16 return $n; 17 } 18} 19 20function phpRound($n, $m) { 21 $b = substr($n, $m - ($m - 1)); 22 if($b >= 5){ 23 return function phpCeil($n, $m); 24 }else{ 25 return function phpFloor($n,$m); 26 } 27 28} 29 30define("BR", "<br>\n"); 31 32echo phpFloor(12345, 1) . BR; 33echo phpFloor(12345, 2) . BR; 34echo phpFloor(12345, 3) . BR; 35echo phpFloor(12345, 4) . BR; 36echo phpFloor(12345, 5) . BR; 37 38echo phpCeil(12040, 1) . BR; 39echo phpCeil(10305, 2) . BR; 40echo phpCeil(12040, 3) . BR; 41echo phpCeil(10305, 4) . BR; 42echo phpCeil(12040, 5) . BR; 43 44echo phpRound(123456, 4) . BR; 45echo phpRound(123456, 3) . BR; 46echo phpRound(14445, 3) . BR;
補足情報(FW/ツールのバージョンなど)
もし、難しいとか、この記法では関数内関数が使えないなどあれば
なぜそうなのかを教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/04/26 05:01