【連載】春の新入社員におくるPHP超入門 ~ その5:関数 – function –

こんにちは。サイオステクノロジーの川田です。

PHPを始めてみよう!触ってみよう!と考えている方向けへのPHP超入門をお届けしております。

第5回は関数についてご紹介致します。

使用するツールはこちらです。
環境の詳細についてはアジェンダの「1.環境構築」へ(/・ω・)/

  • Visual Studio Code
    拡張機能:Remote Development

  • Docker

関数について

関数とは処理をまとたものです。
何度も呼び出すことが可能なため、重複が減ることで保守もしやすくなります。
関数には引数と戻り値があります。

例えばログイン画面で考えてみましょう。
入力チェックの処理がまとめられた関数を呼び出します。

 

①ユーザーが入力したデータを関数の引数に渡します。
②関数は渡されたデータに誤りがないかチェックします。
③今回はIDが空のためエラーを返します。
④渡されたエラー内容を基に、エラーメッセージを表示させます。

入力値チェック用の関数をまとめておくと、別画面でチェックをする際も呼び出すことができます。
またチェック内容に変更があっても関数内のみの修正で済みますね!

PHPの関数には「組み込み関数」と「ユーザー定義関数」があります。
なにが違うのか簡単にご説明します。

組み込み関数

PHPが提供していて初めから用意されています。必要に応じて使うことができます。
PHPが使える環境であれば誰でも簡単に使用することが可能な関数です。
組み込み関数は膨大な数のため一部紹介したいと思います。

関数の一覧が見たい方は☞公式ページへ

strlen/mb_strlen

関数名 引数 戻り値 説明
strlen 文字列 数値 長さを取得。バイト数を返す。
mb_strlen 文字列 数値 長さを取得。文字数を返す。

※strlenはバイト数(UTF-8は全角1文字=3バイト)、mb_strlenは文字数を返します。

<?php
$str = "りんご";

print strlen($str); // 9(バイト)
print mb_strlen($str); // 3(文字)

文字コードはUTF-8なのでstrlenは9バイト、mb_strlenは3文字が返されます。

str_replace

関数名 引数 戻り値 説明
str_replace

検索文字列,
置換対象文字列,
対象文字列

文字列 検索文字列に一致した全ての文字列を置換。
<?php
$str = "りんご オレンジ レモン バナナ";

$replace = str_replace(" ", ",", $str);
print $replace; // りんご,オレンジ,レモン,バナナ

上の例は半角スペースをカンマ(,)区切りに置換しています。よく使われる関数ですね。

implode/explode

関数名 引数 戻り値 説明
implode

連結する文字列,
配列

文字列 配列要素を文字列により連結する。
explode

区切り文字列,
入力文字列

配列 長さを取得。文字数を返す。
<?php
// implode
$fruits = ["りんご", "オレンジ", "レモン", "バナナ"];

$result = implode(',', $fruits);
print $result; // りんご,オレンジ,レモン,バナナ

// explode
$str = "りんご,オレンジ,レモン,バナナ";

$result2 = explode(",", $str);
print_r($result2);
/* 出力結果
Array
(
    [0] => りんご
    [1] => オレンジ
    [2] => レモン
    [3] => バナナ
)/*

implodeは配列からカンマ(,)区切りの文字列になっていること
explodeはカンマ(,)区切りの文字列から配列になっていることがわかります。

以上が組み込み関数の説明でした^^

ユーザー定義関数

ユーザー定義関数はユーザーが独自に処理を作成した関数です。
先ほどのエラーチェック用の関数はユーザー定義関数になります。
何度も使用する処理があれば関数化しておくと良いかもしれませんね。

関数の書き方

関数の定義としては「function」を使用します。
以下のように定義することができます。

function 関数名(引数1, 引数2...) {
    // 処理内容
    return 戻り値;
}

引数を複数指定する場合はカンマ(,)で区切ります。
戻り値はreturnすることで呼び出し元に返すことができます。

また引数や返り値は省略することもできます。

function 関数名() {
    // 処理内容
}

関数の呼び出し方はこのように書きます。

function 関数名([引数1]...) {
    // 処理内容
}

// 関数の呼出し
関数名([引数1]...);

関数の使い方

関数の定義をご説明しました。では実際に使ってみましょう!

  • 引数あり

日付を引数で渡して曜日を取得する関数を作成してみます。

<?php
function getWeek($date){
    $datetime = new DateTime($date);
    $week = array("日", "月", "火", "水", "木", "金", "土");
    $w = $datetime->format('w');
    return $week[$w] . "曜日";
}

$youbi = getWeek("2021/05/12");
print $youbi; // 水曜日

「水曜日」と出力されます。では引数なしの場合をみてみましょう。

  • 引数なし
<?php
function getWeek(){
    $datetime = new DateTime();
    $week = array("日", "月", "火", "水", "木", "金", "土");
    $w = $datetime->format('w');
    return $week[$w] . "曜日";
}
$youbi = getWeek();
print $youbi; // 水曜日

現在の日付で曜日を出力しています。

  • 引数・戻り値なし
<?php
function hello(){
    echo "Hello World!";
}
hello(); // Hello World!

戻り値も省略できます。
helloという関数を呼び出すと関数の中に書かれているechoが出力されます。

いかがでしたか?何度も処理を書かずに関数を呼び出すだけでソースもすっきりすると思います!

複数の戻り値

関数はarray()を用いることで複数の値を返却することができます。
受け取り方をいくつかご紹介していきます。

  • 配列として返す
<?php
function getPerson(){
    $name_sei = "yamada";
    $name_mei = "hanako";

    return array($name_sei, $name_mei);
}
$name = getPerson();
print_r($name);
Array
(
    [0] => yamada
    [1] => hanako
)

return [$name_sei, $name_mei];としても大丈夫です。
3つ以上の変数も可能です。

  • listで受け取る
<?php
function getPerson(){
    $name_sei = "yamada";
    $name_mei = "hanako";

    return array($name_sei, $name_mei);
}

list($name_sei, $name_mei) = getPerson();
var_dump($name_sei, $name_mei); 
string(6) "yamada"
string(6) "hanako"
listについて注意
PHP5は最も右のパラメータから値を代入します。
PHP7では最も左のパラメータから値を代入します。今回はPHP7のため左。

このように書くことで複数の値を受け取ることができます。

まとめ

今回は関数の「組み込み関数」と「ユーザー定義関数」についてご説明しました。
関数を理解すると実装幅がグーーーーンと広がりますね^^

次回は実際に画面を動かしながらHTTP/HTTPSやGET、POSTについてご紹介します。
こちらをクリック

最後までお読みいただきましてありがとうございました(^ω^)

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です