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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

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

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についてご紹介します。
こちらをクリック

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

アバター画像
About kawada 25 Articles
Webアプリケーション開発を行っており、プログラミング初心者向けの記事や動画編集に関する内容を中心とした記事を執筆しています。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる