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

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

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

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

1835閲覧

php「自作関数」を用いた「関数内関数」について

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/04/25 15:01

前提・実現したいこと

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/ツールのバージョンなど)

もし、難しいとか、この記法では関数内関数が使えないなどあれば
なぜそうなのかを教えていただけると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

関数呼び出しにfunctionは必要ないです。

php

1function phpRound($n, $m) { 2 $b = substr($n, $m - ($m - 1)); 3 if($b >= 5){ 4 return phpCeil($n, $m); 5 }else{ 6 return phpFloor($n,$m); 7 } 8}

投稿2021/04/25 15:09

satokei

総合スコア1217

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

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

退会済みユーザー

退会済みユーザー

2021/04/26 05:01

satokeiさんありがとうございました! 呼び出しにも必要と思っておりましたがいらなかったんですね(;'∀') 助かりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問