開発ノート【PHP基本文法:function】
開発ノート【PHP基本文法:function】です。
当サイトは、Bootstrap5で製作しています。
PHP基本文法:function
ファンクション(関数)を作る
// 連想配列を受け取って、リストにして出力する
function make_list($list) {
foreach ($list as $key => $value) {
echo $key, ':', $value, "\n";
}
}
$pref = [
'hokkidou' => '北海道',
'aomori' => '青森県',
'iwate' => '岩手県',
];
make_list($pref);
$color = [
'red' => '赤',
'blue' => '青',
'black' => '黒'
];
make_list($color);
実行結果hokkidou:北海道
aomori:青森県
iwate:岩手県
red:赤
blue:青
black:黒
「返り値」のあるファンクションを作る
// 足し算をするファンクション
function sum($num1, $num2) {
$answer = $num1 + $num2;
return $answer;
}
$item_sum = sum(167, 269);
echo $item_sum;
実行結果436
「可変パラメーター」のファンクションを作る
- 固定パラメーターは、可変パラメーターの前に指定する。($param1)
-
可変パラメーターは、「...$numbers」のように指定する。
※$numbersは、配列として扱われる。
// 合計を計算する
function sum($param1, ...$numbers) {
echo $param1, "\n";
$answer = 0;
foreach ($numbers as $num) {
$answer += $num;
}
return $answer;
}
$param1 = 'abc';
$item_sum = sum($param1, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
echo $item_sum;
実行結果abc
550
「省略出来るパラメーター」のファンクションを作る
- 省略出来るパラメーターは、必須パラメーターの後に指定する。($head)
-
省略出来るパラメーターは、「$head = '・'」のように、デフォルトを指定する。
※パラメーターを省略すると、デフォルトが指定されるようにするため。
function make_list($list, $head = '・') {
foreach ($list as $key => $val) {
echo $head, $key, ':', $val, "\n";
}
}
$pref = [
'hokkidou' => '北海道',
'aomori' => '青森県',
'iwate' => '岩手県',
];
make_list($pref); // 第2パラメーターを省略
make_list($pref, '■'); // 第2パラメーターを指定
実行結果・hokkidou:北海道
・aomori:青森県
・iwate:岩手県
■hokkidou:北海道
■aomori:青森県
■iwate:岩手県
リファレンス渡し(参照渡し)
-
ファンクションの結果を、パラメーターで指定した自身の変数に代入して返すこと。
※パラメーターで指定した変数の値が変わるので注意が必要。
// 配列の先頭に文字をつなげる
function add_head(&$target) {
for ($i=0; $i<count($target); $i++) {
$target[$i] = '・' . $target[$i]; // パラメーターの値を直接編集している
}
}
$color = ['黒', '赤', '白'];
print_r($color);
add_head($color); // $colorの値が変わって戻ってくる
print_r($color);
add_head($color); // $colorの値が変わって戻ってくる
print_r($color);
実行結果Array
(
[0] => 黒
[1] => 赤
[2] => 白
)
Array
(
[0] => ・黒
[1] => ・赤
[2] => ・白
)
Array
(
[0] => ・・黒
[1] => ・・赤
[2] => ・・白
)
スコープとglobal宣言
-
スコープ
{}内で宣言した変数は、{}内でしか使えない。
逆に、{}外で宣言した変数は、{}外でしか使えない。 -
global宣言
スコープの外で宣言した変数を、パラメーターを介さずにそのまま使うことが出来る。
※パラメーターを介さずにスコープ外の変数を使うことが出来て便利だが、使い分けが必要。
パラメーター変数:値が毎回変わるようなもの。
global変数:定数のようなもの。
$tax = 10;
// 税込金額を返す
function sum($a, $b) {
global $tax;
$ret = ($a + $b) * ($tax / 100 + 1);
return $ret;
}
$num1 = 100;
$num2 = 200;
$answer = sum($num1, $num2);
echo $answer;
実行結果330
ファンクションのパラメーターに型を指定する
- パラメーターに型を指定することで、誤動作を防ぐことが出来る。
$tax = 10;
// 税込金額を返す
function sum(int $a, int $b): int {
global $tax;
$ret = ($a + $b) * ($tax / 100 + 1);
return $ret;
}
$num1 = 100; // 自動型変換
$num2 = 200;
$answer = sum($num1, $num2);
echo $answer;
※int $a、int $b:整数型で受け付ける。※: int:戻り値($ret)は、整数型で戻す。
ファンクションのパラメーターとして無名関数(クロージャー)を使う
- WordPressの中で使われている。
- $callback(コールバック関数)を使う。
// 金額をカンマ編集して表示する
function echo_price($callback) {
echo number_format($callback(1000, 500)), '円';
}
// 無名関数(クロージャー)
$get_sum = function($a, $b) {
return $a + $b;
};
echo_price($get_sum);
実行結果1,500円
// 金額をカンマ編集して表示する
function echo_price($callback) {
echo number_format($callback(1000, 500)), '円';
}
// 変数の代わりにファンクションを使う
echo_price(function($a, $b) {
return $a + $b;
});
実行結果1,500円
// 金額をカンマ編集して表示する
function echo_price($callback) {
echo number_format($callback(1000, 500)), '円';
}
// もっとわかりやすい書き方
// =>(アロー演算子)を使う
$get_sum = fn($a, $b) => $a + $b;
echo_price($get_sum);
実行結果1,500円