PHP関数
PHPの真の力は、その機能にあります。
PHPには1000を超える組み込み関数があり、さらに独自のカスタム関数を作成できます。
PHP組み込み関数
PHPには、特定のタスクを実行するためにスクリプト内から直接呼び出すことができる1000を超える組み込み関数があります。
PHP組み込み関数の完全な概要については、PHPリファレンスを確認してください 。
PHPユーザー定義関数
組み込みのPHP関数に加えて、独自の関数を作成することもできます。
- 関数は、プログラムで繰り返し使用できるステートメントのブロックです。
- ページの読み込み時に関数が自動的に実行されることはありません。
- 関数は、関数の呼び出しによって実行されます。
PHPでユーザー定義関数を作成する
ユーザー定義の関数宣言は、次の単語で始まりますfunction
。
構文
function functionName()
{
code to be executed;
}
注:関数名は、文字またはアンダースコアで始まる必要があります。関数名では大文字と小文字は区別されません。
ヒント:関数の機能を反映した名前を関数に付けてください。
以下の例では、「writeMsg()」という名前の関数を作成します。開始中括弧({)は関数コードの開始を示し、終了中括弧(})は関数の終了を示します。この関数は「Helloworld!」を出力します。関数を呼び出すには、名前の後に角かっこ()を付けてください。
例
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // call the function
?>
PHP関数の引数
引数を介して関数に情報を渡すことができます。引数は変数のようなものです。
引数は、関数名の後の括弧内に指定されます。引数はコンマで区切るだけで、いくつでも追加できます。
次の例には、1つの引数($ fname)を持つ関数があります。familyName()関数が呼び出されると、名前(Janiなど)も渡されます。この名前は関数内で使用され、いくつかの異なる名が出力されますが、名前は同じです。
例
<?php
function familyName($fname) {
echo "$fname Refsnes.<br>";
}
familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>
次の例には、2つの引数($ fnameと$ year)を持つ関数があります。
例
<?php
function familyName($fname, $year) {
echo "$fname Refsnes. Born in $year <br>";
}
familyName("Hege", "1975");
familyName("Stale", "1978");
familyName("Kai Jim", "1983");
?>
PHPは緩く型付けされた言語です
上記の例では、変数がどのデータ型であるかをPHPに通知する必要がないことに注意してください。
PHPは、その値に応じて、データ型を変数に自動的に関連付けます。データ型は厳密な意味で設定されていないため、エラーを発生させることなく、整数に文字列を追加するなどのことができます。
PHP 7では、型宣言が追加されました。これにより、関数を宣言するときに予期されるデータ型を指定するオプションが提供され、strict
宣言を追加することで、データ型が一致しない場合に「致命的なエラー」がスローされます。
次の例では、以下を使用せずに、数値と文字列の両方を関数に送信しようとしていますstrict
。
例
<?php
function addNumbers(int $a, int $b) {
return $a
+ $b;
}
echo addNumbers(5, "5 days");
// since strict is NOT enabled "5 days" is
changed to int(5), and it will return 10
?>
指定するstrict
には、を設定する必要がありますdeclare(strict_types=1);
。これは、PHPファイルの最初の行にある必要があります。
次の例では、数値と文字列の両方を関数に送信しようとしていますが、ここにstrict
宣言を追加しました。
例
<?php declare(strict_types=1); // strict requirement
function
addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5
days");
// since strict is enabled and "5 days" is not an integer, an
error will be thrown
?>
strict
宣言は、物事を意図された方法で使用することを強制します。
PHPのデフォルトの引数値
次の例は、デフォルトパラメータの使用方法を示しています。引数なしで関数setHeight()を呼び出すと、デフォルト値が引数として使用されます。
例
<?php declare(strict_types=1); // strict requirement
function setHeight(int $minheight = 50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // will use the default value of 50
setHeight(135);
setHeight(80);
?>
PHP関数-戻り値
関数が値を返すようにするには、次のreturn
ステートメントを使用します。
例
<?php declare(strict_types=1); // strict requirement
function sum(int $x,
int $y) {
$z = $x + $y;
return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
?>
PHPの戻り型の宣言
return
PHP 7は、ステートメントの型宣言もサポートしています。関数の引数の型宣言と同様に、厳密な要件を有効にすることで、型の不一致時に「致命的なエラー」がスローされます。
関数returnの型を宣言するには、関数を宣言するときに、コロン(
)と開き中括弧( )括弧:
の直前に型を追加します。{
次の例では、関数の戻り値のタイプを指定します。
例
<?php declare(strict_types=1); // strict requirement
function addNumbers(float
$a, float $b) : float {
return $a + $b;
}
echo addNumbers(1.2, 5.2);
?>
引数の型とは異なる戻り型を指定できますが、戻りが正しい型であることを確認してください。
例
<?php declare(strict_types=1); // strict requirement
function addNumbers(float
$a, float $b) : int {
return (int)($a + $b);
}
echo addNumbers(1.2, 5.2);
?>
参照による引数の受け渡し
PHPでは、引数は通常値によって渡されます。つまり、値のコピーが関数で使用され、関数に渡された変数は変更できません。
関数の引数が参照によって渡される場合、引数を変更すると、渡された変数も変更されます。関数の引数を参照に変換するには、&
演算子を使用します。
例
参照渡し引数を使用して、変数を更新します。
<?php
function add_five(&$value) {
$value += 5;
}
$num
= 2;
add_five($num);
echo $num;
?>