チャチャッとPHPブログ

プログラミング初心者むけPHP学習をまとめています
2020/05/22

【STEP 5】PHPを学ぼう 関数 / 引数 / 戻り値

STEP 5

14
関数を
つかおう

PHPでは関数は大きく分けて2つあります。

「PHPで用意されている関数」と
「自分でも作ることができる関数」の2つがあります。

「PHPで用意されている関数」を『組み込み関数』
「自分でも作ることができる関数」を『ユーザー定義関数』といいます。

組み込み関数
関数とは役立つマシンのようなものです。数値や文字を渡すと、求める結果にして返してくれます。関数はたくさんの種類があります。

例)変数の中身を表示したい
 >> var_dump関数を使います

$data = 100;
var_dump($data);
 → int(100)が表示されます。


例)変数の文字列の長さを知りたい
>>strlen関数を使います

$data = 'abc';
$nagasa = strlen($data);
 → 3 が変数に入ります。

関数名()の形で使います。上記は「PHPで用意されている関数」の例です。「組み込み関数」や「内部関数」といいます。

ユーザー定義関数
関数は用意されているものだけでなく、自分でも作ることができます。これを「ユーザー定義関数」といいます。

特定の処理をまとめて入れておき、必要なタイミングで使います。ユーザー定義関数は、次のような形式で書きます。

// 関数の定義
function 関数名()
{
・・・処理・・・
}

// 関数のよびだし
関数名();


サンプルコード

<?php

//関数の定義
function aisatsu(){
  echo 'こんにちわ!';
}

//関数のよびだし
aisatsu();

?>

実行結果

こんにちわ!

サンプルコードの解説

aisatsu()で呼び出します。
すると上に定義した function aisatsu(){~ が実行されます。

15
引数とは:
関数に渡される値

関数へ数値や文字などのデータを渡して処理することができます。

このときの渡すデータのことを「引数」といいます。
サンプルコードをみてみましょう。

サンプルコード

<?php

//関数の定義
function shouhizei($val){
   echo $val * 1.1;
}
     
$num = 100;
     
//関数のよびだし
shouhizei($num);

?>

実行結果

110

サンプルコードの解説

消費税を表示する処理のイメージになります。
引数として$numをshouhizei()に渡しています。shouhizei()は 100 を受け取って計算し、110を表示します。

16
戻り値とは:
関数を通してかえされる値

関数では「return」を使って、実行結果を返すことができます。

このときの関数から戻される値を「戻り値」といいます。

実行結果を返してもらうことで、独自の関数で処理したデータをまた使うことができます。
サンプルコードをみてみましょう。

サンプルコード

<?php

//関数の定義
function shouhizei($val){
   return $val * 1.1;
}
     
$num = 100;
     
//関数のよびだし
$kakaku = shouhizei($num);

echo $kakaku . '円';

?>

実行結果

110円

サンプルコードの解説

前半はひとつ前のサンプルコードと同じです。100を受け取って計算し、今度は 110 をその場で表示しないで返しています。返された $kakaku に円をつけて表示しています。

ユーザー定義関数では、自分オリジナルの処理をまとめておくことができます。何度も同じ処理を書くことなく、再利用できるため、とても便利です。

17
引数 ①
デフォルト値いれよう

引数にはあらかじめ、データをセットすることでデフォルト値(初期値)をもつことができます。

引数があれば、渡された値をつかいます。なければセットされたデータをつかいます。サンプルコードをみてみましょう。

サンプルコード

<?php

//関数の定義
function shouhizei($val = 100){
   return $val * 1.1;
}
     
$num = 200;
     
//関数のよびだし
$kakaku = shouhizei($num);

echo $kakaku . "円< br/>\n";

$kakaku2 = shouhizei();

echo $kakaku2 . "円< br/>\n";

?>

実行結果

220円
110円

サンプルコードの解説

引数にイコール「 = 」を使ってデフォルト値をセットできます。

$kakaku には shouhizei() により、渡された 200 が×1.1され220が入ります。$kakaku2 は shouhizei() に渡される値がないため、デフォルト値の 100 が使われ、計算され、110が入ります。

デフォルト値をセットされていると、引数で渡さなくても、自動でデータをいれて処理してくれます。引数の渡し忘れのときに起こるエラーを予防できます。使えるところでは積極的につかうことをおすすめします。

18
引数 ②
複数わたそう

関数に引数をいくつも渡すこともできます。

引数は呼び方があり、左から順に第一引数、第二引数・・と呼びます。サンプルコードをみてみましょう。

サンプルコード

<?php

//関数の定義
function hyouji($val, $type){
   $okane = $val . $type;
   return $okane;
}
     
//関数のよびだし
$kakaku = okane(100,"ドル");

echo $kakaku;

?>

実行結果

100ドル

サンプルコードの解説

okane()に値 100 , ドル を渡すことで、数字と文字を組み合わせた「100ドル」が $kakaku に入ってきます。
複数の引数が渡って、処理しています。

19
引数 ③
型をつけよう

◎慣れてからつかおう
この内容は、はじめのうちは、特に意識しなくとも大丈夫です。そういうのもあるんだなぁ程度で構いません。すぐ理解できなくとも、前にすすめましょう。


関数の引数に int や string などのデータの型を指定することができます。

経験者のコードで見ることがあるかもしれません。

開発が複雑に進んでいくと、思わぬエラーに苦しみます。型を指定しておくと、想定外のエラーをより検知しやすくなります。実務レベルにおいては、すこしでも余計な心配をすることなく、開発できることは大いにメリットがあります。

サンプルコード

<?php

//関数の定義
function sum(int $a, int $b) {
    return $a + $b;
}

//関数のよびだし
$kekka = sum(1, 2);

echo $kekka;

?>

実行結果

3

サンプルコードの解説

function sum(int $a, int $b) のように、関数の引数の前に型をかきます。それ以外の型を渡すと、エラーになります。

20
戻り値:
型をつけよう

◎慣れてからつかおう
この内容は、はじめのうちは、特に意識しなくとも大丈夫です。そういうのもあるんだなぁ程度で構いません。すぐ理解できなくとも、前にすすめましょう。


関数の戻り値にも int や string などのデータの型を指定することができます。(※PHP7以降から使える機能です)

何もしなければ、関数から返却される値の型はPHPが自動で決定しています。

こちらも経験者のコードで見ることがあるかもしれません。
サンプルコードをみてみましょう。
<?php

//関数の定義
function test ($val): int
{
    if ($val == 1) {
        return 0;
    } else if ($val == 2) {
        return '0';
    } else {
        return false;
    }
}

$a = test(1);
echo $a . "< br/>\n";
$b = test(2);
echo $b . "< br/>\n";
$c = test(3);
echo $c . "< br/>\n";
?>

実行結果

0
0
0

サンプルコードの解説

function test ($val): int のように、定義の引数のとなりに : int など型を指定します。

$a は整数の0
$b は文字列の0
$c はfalse

が戻り値になりますが、int型(整数)に変換されます。

$b は文字列の0 → 整数の0に変換
$c false → 整数の0に変換

指定に合わせた形に戻り値が型変換できれば、変化します。うまく行かない場合はエラーになります。

21
引数の
値渡しと参照渡し

◎慣れてからつかおう
この内容は、はじめのうちは、特に意識しなくとも大丈夫です。そういうのもあるんだなぁ程度で構いません。すぐ理解できなくとも、前にすすめましょう。


実は、関数の引数には「値渡し」と「参照渡し」という2種類のタイプがあります。

これまではすべて「値渡し」です。どこで値がどうなろうとも元に影響を与えることはありません。

「参照渡し」は値を渡すと、元の値が変化します。使い所が難しいです。

使用頻度が著しくひくいです。どこかで出会ったとときに、改めて調べるでもいいかもしれません。サンプルコードをみてみましょう。

サンプルコード

<?php

//関数の定義
function drink(&$a) {
     $a = "Otya";
}

$b = "Tea";
 
echo $b . "< br/>\n";

//関数のよびだし
drink($b);

echo $b . "< br/>\n";

?>

実行結果

Tea
Otya

サンプルコードの解説

function drink(&$a) のように関数の引数の前に「&」をつけます。

はじめの $b はそのまま Tea です。$b は drink()に入れると$aの影響をうけ、元の $b が変化し、Otya になります。


いかがでしょうか。
関数は処理をまとめたり、読みやすくなるなどメリットだらけです。積極的につかってみてください。

記事

カテゴリ

About me

Name : sin (@Sin_Programming)
ディレクター | プログラマ | プログラム開発15年目 | PHP/JavaScript/Swiftが好きです。 プログラミング初心者の方向けのPHP学習iPhoneアプリ「チャチャッとPHP」を作成しました。 PHPプログラムをムダなく学習できる方法としてまとめています。
iPhoneアプリ「チャチャッとPHP」8日で覚えるPHP