連載
» 2017年08月07日 05時00分 公開

Web業界で働くためのPHP入門(9):PHPの「関数」で処理を共通化して再利用する――プログラミングの幅をぐっと広げよう (1/3)

オープンソースのWeb開発向けスクリプト言語「PHP」の文法を一から学ぶための入門連載。今回は、PHPの関数について解説します。

[齊藤新三(著)/山田祥寛(監修),WINGSプロジェクト]

「関数」が分かるとプログラミングの幅がぐっと広がる

 オープンソースのWeb開発向けスクリプト言語「PHP」の文法を一から学ぶための入門連載「Web業界で働くためのPHP入門」。

 今回のテーマは「関数」です。今までの連載中でも「関数」という言葉は登場しています。その際は、関数が何かを説明せずに使っていました。ここではっきりさせておきましょう。関数が分かるとプログラミングの幅がぐっと広がります。

関数とは

 関数とは、処理をひとまとめにして、再利用できるようにしたものです。例えばPHPでは、「数値を四捨五入した値を作成する」処理をひとまとめにし、「round」という名前が付けられています。

関数の基本的な使い方

 実際に使ってみましょう。例えば、下記のような小数値があるとします。

$dec = 458.567;

 この数値を、小数第1位を四捨五入して、整数値にしたいとします。この処理を今までの連載の知識で行うのは容易ではありませんが、round()を使えば簡単です。以下のuseRoundFunction.phpを作成し、実行してください。

<?php
$dec = 458.567;  // (1)
$roundDec = round($dec);  // (2)
print("元の値: ".$dec);
print("<br>四捨五入された値: ".$roundDec);
リスト1 phplesson/chap09/useRoundFunction.php

 実行結果は下記の通りです。

元の値: 458.567
四捨五入された値: 459

 (2)では、(1)で用意した小数値$decを、このround()のカッコ内に記述し、小数第1位が四捨五入された整数値を取得しています。

引数(パラメーター)

 関数を使う場合、処理内容によっては、あらかじめデータをもらわないと処理が完結しないことがあります。例えばround()では、そもそも数値をもらわないと処理ができません。そういったデータを関数名の次の( )内に記述します。これを「引数(ひきすう)」、あるいは「パラメーター」(英語でParameters)といいます。

 リスト1では、小数値変数として$decを用意した上で、それを引数として渡しています。下記のように、( )内に直接値を記述しても正しく動作します。

$roundDec = round(458.567);

 また、処理に必要なデータが複数の場合は、必要な数だけ引数を渡します。その場合、指定された順番通りにカンマで区切って渡します。少し例を見てみましょう。

 リスト1のround()関数では小数第1位を四捨五入して整数値にしました。実は、round()関数は任意の桁で四捨五入できます。ここでは、小数第2位を四捨五入して、小数点以下1桁の小数を作成してみましょう。以下のuseRoundFunction2.phpを作成し、実行してください。

$dec = 458.567;  // (1)
$roundDec = round($dec, 1);  // (2)
print("元の値: ".$dec);
print("<br>四捨五入された値: ".$roundDec);
リスト2 phplesson/chap09/useRoundFunction2.php

 実行結果は下記の通りです。

元の値: 458.567
四捨五入された値: 458.6

 リスト1から変わったところは(2)だけです。リスト1では下記のように引数が1つだけでした。

round($dec)

 リスト2では、もう1つ増やし、下記のようにしています。

round($dec, 1)

 このように引数を複数渡す場合は、カンマで区切ります。

 round()関数は、第1引数として四捨五入したい値を記述します。引数が第1引数のみの場合は整数値に四捨五入しますが、第2引数として整数を記述すると、小数点以下第2引数で指定された桁数の数値を作成します。ここでは「1」と記述しているので、小数第2位を四捨五入して小数点以下1桁の値を作成しています。実行結果からそのことが読み取れるでしょう。

戻り値

 関数では処理内容によっては、処理された結果を受け取れるようになっている場合があります。これを「戻り値」、あるいは「返り値」(英語でReturn Values)といいます。

 例えば、round()は四捨五入された値を戻り値として返してくれます。リスト1やリスト2の(2)では戻り値を変数$roundDecに代入して、以降で利用できるようにしています。

「関数リファレンス」を見よう

 このようにPHPには、便利な処理を行ってくれる、さまざまな関数が用意されています。それらは、PHPマニュアルの「関数リファレンスのページ」で確認できます。round()は[数学]→[Math]→[round]と進んだ、こちらのページで確認できます。説明部分に下記のように記述されています。

float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] )

 ここから、引数も戻り値も確認できます。ただ、このページでは引数として3個記載されていますが、リスト1では1個、リスト2では2個しか渡していません。これは引数の省略を意味し、上の記述では引数が[ ]で囲まれていることが省略可能なことを意味します。これに関しては、後の連載で詳しく解説する予定です。

 なお、上記「関数リファレンス」ページでは、引数は「パラメーター」、戻り値は「返り値」という表記になっていますが、本連載ではプログラミング用語として普及している「引数」「戻り値」を使っていきます。

引数のデータ型

 また例えば、第1引数の$valの前に「float」という記述がありますが、これは引数のデータ型を表します。同じく、関数名(round)の前の「float」は戻り値のデータ型を表します。

 PHPでは、変数のデータ型を意識せずにコーディングできる言語ですが、内部的には確実に区別して処理を行っています。関数では、それを明示することがあります。関数を使用する場合は、この辺りにも注意した方がいいでしょう。

 表1に、主なデータ型を記載しておきます。

表1 引き数や戻り値のデータ型の記述
記述 内容
array 配列
bool true/false
float 小数値
int 整数値
string 文字列
       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。