オープンソースのWeb開発向けスクリプト言語「PHP」の文法を一から学ぶための入門連載。今回は、PHPの関数について解説します。
オープンソースの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);
実行結果は下記の通りです。
元の値: 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);
実行結果は下記の通りです。
元の値: 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に、主なデータ型を記載しておきます。
記述 | 内容 |
---|---|
array | 配列 |
bool | true/false |
float | 小数値 |
int | 整数値 |
string | 文字列 |
Copyright © ITmedia, Inc. All Rights Reserved.