【PHP】関数の基本的な書き方

PHP

PHPの関数の書き方を紹介します。
関数とは特定の機能を使いまわせるようにまとめたものです。
関数が使えるようになると、同じ処理を使い回せるようにします。

PHPの関数の書き方

<?php 
$nums = [1,3,5,7];
$sum = 0;
foreach($nums as $num) {
  $sum += $num;
}
echo "合計:$sum";
//合計:16

上のロジックを関数にして、同じ処理を使い回せるようにします。

<?php 
$nums = [1,3,5,7];
$nums2 = [3,5,6,8,3,4];
$nums3 = [3,7,6,8,5,7,7,10];

function sum($nums) {
  $sum = 0;
  foreach($nums as $num) {
    $sum += $num;
  }
  echo "合計:$sum";
}

// 関数を実行
sum($nums); //合計:16
sum($nums2); //合計:29
sum($nums3); //合計:53

JavaScriptの関数とほとんど変わりがなく、
functionから始まり、関数名を書き、()内には関数で使用する引数を任意の名前で指定することができます。

returnを設定して関数の実行結果を受け取る

<?php 
$nums = [1,3,5,7];
$nums2 = [3,5,6,8,3,4];
$nums3 = [3,7,6,8,5,7,7,10];

function sum2($nums) {
  $sum = 0;
  foreach($nums as $num) {
    $sum += $num;
  }
  return $sum;
}

// 関数を実行
$result1 = sum2($nums); //合計:16
$result2 = sum2($nums2); //合計:29
$result3 = sum2($nums3); //合計:53
echo "合計:$result1, 合計:$result2, 合計:$result3";
//合計:16, 合計:29, 合計:53

上のように、returnのあとに関数の実行結果として受け取りたいものを記述することで、関数を実行したときに、左辺側の変数に格納することができます。
このように、returnで返される値を戻り値といいます。

returnの注意点

<?php 
$nums = [1,3,5,7];
$nums2 = [3,5,6,8,3,4];
$nums3 = [3,7,6,8,5,7,7,10];

function sum3($nums) {
  $sum = 0;
  foreach($nums as $num) {
    $sum += $num;
  }
  return $sum;

  echo '実行されません'; //return以下は処理が実行されない
}

returnが実行された時点で、関数内のその後に書かれている記述は実行されません。
returnが呼ばれるとその関数の処理は終わります。

<?php 
$price = 2000;

function withTax($basePrice, $taxRate) {
  $sumPrice = $basePrice + ($basePrice * $taxRate);
  // 少数点以下を四捨五入する
  $sumPrice = round($sumPrice);

  return $sumPrice;
}

$price = withTax($price, 0.1);
echo "金額は{$price}です。";
//金額は2200です。

関数の引数にデフォルト値を設定する

<?php 
$price = 2000;

function withTax2($basePrice, $taxRate = 0.1) {
  $sumPrice = $basePrice + ($basePrice * $taxRate);
  // 少数点以下を四捨五入する
  $sumPrice = round($sumPrice);

  return $sumPrice;
}

$price = withTax2($price);
echo "金額は{$price}です。";
//金額は2200です。

上のように、=の右辺側にデフォルト値を指定することで、毎回引数で指定する必要がなくなります。
第二引数を指定すれば、デフォルト引数は無視されます。

PHPは関数が文字列でも実行可能

<?php 
$price = 2000;

function withTax3($basePrice, $taxRate = 0.1) {
  $sumPrice = $basePrice + ($basePrice * $taxRate);
  // 少数点以下を四捨五入する
  $sumPrice = round($sumPrice);

  return $sumPrice;
}

//文字列にしても実行できる
$price = "withTax3"($price);
echo "金額は{$price}です。";
//金額は2200です。

$fn = "withTax3";
$price2 = $fn($price);
echo "金額は{$price2}です。";
//金額は2420です。

PHPの場合は、上のように文字列として記述しても関数を実行することができます。
そのため、変数に関数名を文字列として格納して、実行することができます。
JavaScriptなどの言語では見られない珍しい機能になります。

PHP

Posted by devsakaso