独習PHP」を元に、要約メモしておきたいと思います。

関数とは、与えられた入力に基づいてなにかしらの結果を返す命令のことを言う。この入力のことを引数、出力のことを戻り値と呼ぶ。関数の基本的な構文は以下。

[戻り値=] 関数名 ([引数1,引数2,...])

引数が2つ以上存在する場合には、カンマ区切りで記述する。引数が存在しない場合での関数名の後のカッコは省略できない。また、関数によっては処理を行うのみで戻り値を持たないものがある。

PHPマニュアルにおける、基本的な構文表記の読み方

void asort (array array [,int sort_flags])
戻り値のデータ型 関数名 (引数のデータ型 仮引数 [,引数のデータ型 仮引数])

引数のデータ型には次のようなものがある

データ型 概要
array 配列型
bool 真偽型(TRUE | FALSE)
float 浮動小数点型
int 整数型
mixed 複数のデータ型を返す可能性がある(戻り値のみ)
object オブジェクト型
resource リソース型
string 文字列型
void 戻り値がない(戻り値のみ)

関数が戻り値を返さない場合、戻り値のデータ型はvoidと表記される。また、関数によっては、たとえば処理に成功した場合はresouce型を、失敗した場合はFALSEを返すようなものがある。このような関数の戻り値はmixed(混合型)と表記される。

ユーザ定義関数

あらかじめ用意されている関数ではなく、自前の関数。

下記はユーザ定義関数の例。showString関数は、与えられた文字列($value)を$num回繰り返す。その歳、$delimで指定された値を文字列の区切り文字として使用する。

<?php
function showString ($value, $num, $delim) {
 for ($i=1;$i<=$num;$i++) {
  print ($value.$delim);
 }
}
showString ('だるまさんが転んだ!',5,'<br/>');
?>

だるまさんが転んだ! だるまさんが転んだ! だるまさんが転んだ! だるまさんが転んだ! だるまさんが転んだ!

ユーザ定義関数を定義するには、function命令を使用する。function命令の一般的な構文は以下。

function 関数名 (仮引数1,仮引数2,...) {
 ...任意の処理...
  [return 戻り値;]
}

仮引数とは、ユーザ定義関数の処理内で参照可能な変数のこと。後からユーザ定義関数を利用する場合、外部の情報をユーザ定義関数に引き渡す際に使用する。ユーザ定義関数の引数を定義するための情報。

省略可能な引数を設定したい場合には、次のように仮引数の後方にデフォルト値を明記する。これによって、引数が省略された場合には、指定されたデフォルト値が使用される。

<?php
function showString ($value, $num, $delim='<br />') {
 for ($i=1;$i<=$num;$i++) {
  print ($value.delim);
 }
}
showString ('だるまさんが転んだ!',5);
?>

ただし、省略可能な引数は、必ず必須である引数の後方に配置するようにする。たとえば次のような記述は不可。

function showString ($value, $delim='<br />', $num) {</code></pre></p>
<p>ユーザ定義関数が戻り値を持つ場合は、return命令を使用して処理結果を呼び出し元に返す。return命令が記述されなかった場合、ユーザ定義関数は戻り値を返さない。</p>
<h3>関数の有効範囲</h3>
<p><pre><code><?php
$x=1;
function sample() {
 $x++;
 return $x;
}
print (sample());
?>

1

関数内の変数をローカル変数、関数外の変数をグローバル変数と呼ぶ。 上の例では、最初に初期化された$xはグローバル変数で、次にユーザ定義関数の中で定義された$x(ローカル変数)とは全くの別物。

グローバル変数を強制的にローカル変数として利用したい場合には、globalキーワードを使用する。

<?php
$x=1;
function sample() {
 global $x;
 $x++;
 return $x;
}
print (sample());
?>

2

外部ファイルのインクルード

ユーザ定義関数はその性質上、特定のスクリプトでだけ利用するよりも、複数のスクリプトで共有することが多い。外部ファイルとして保存しておき、必要に応じてインクルード(取り込む)のが好ましいアプローチ。 外部ファイルをインクルードするには、include_once命令またはrequire_once命令を使用する。

included.php

<?php
function showString ($value, $num, $delim) {
 for ($i=1;$i<=$num;$i++) {
 print ($value.$delim);
 }
}
?>

include.php

<?php
include_once ('included.php');
showString ('だるまさんが転んだ!',5,'<br />');
?>

require.php

<?php
require_once ('included.php');
showString ('だるまさんが転んだ!',5,'<br />');
?>

外部ファイルが存在しなかった場合、include_once関数は警告を発するだけだが、require_once関数はエラーとし、スクリプトの実行を中断する。

最後までお読みいただきありがとうございます!よろしければフォローお願いします!

もしお役に立てる情報がありましたら、そのお気持ちを Bitcoin や PayPal で送金していただけると、とても嬉しく思います!

他にも、Amazonのほしい物リストからお選びいただくこともできます。

こちらの関連記事もあわせてどうぞ!

      【独習PHP】02_配列

      「独習PHP」を元に、要約メモしておきたいと思います。 配列 仕切りのある入れ物のこと。ひとつの変数に対してひとつの値を持つものをスカラー変数といい、配列のように複数の値を持つことができる入れ物のこ…

      【独習PHP】04_定数

      「独習PHP」を元に、要約メモしておきたいと思います。 変数は、その中身をプログラムの途中で変更/編集することが可能だが、定数は入れ物と中身がセットになっていて、途中で中身を変更できない入れ物。プロ…

      【独習PHP】01_変数

      詳しい説明はあとあと! 決まりごとという型を作ってしまうと、自分で自分のクビを絞めることになる場合も。 例えば「仕事を始める前には必ずストレッチをやろう」という型を作ると、当然それを守れない時がでて…

      【独習PHP】05_演算子

      「独習PHP」を元に、要約メモしておきたいと思います。 代数演算子 演算子 概要 例 + ふたつの数値の和 $x + $y - ふたつの数値の差 $x - $y * ふたつの数値の積 $x * $y…

      【独習PHP】03_スーパーグローバル変数

      「独習PHP」を元に、要約メモしておきたいと思います。 $_POST POST形式のHTMLフォーム( タグのmethodオプションが"POST")から入力された情報(ポストデータ)を取得するための…