とぎぷろべい

包丁研ぎとプログラミングと米国株投資についてのなんやかんや

可変パラメータ(可変長引数)について(PHP)

f:id:feci:20210727001932j:plain

PHP7

 

PHP7.4.1における可変パラメータ(可変長引数)について。

<?php

//①可変パラメータなしの場合
function aaa($a1, $a2, $a3) { //パラメータ3つの関数
  $av = $a1 + $a2 + $a3;      //引数の加算演算
  return $av;                 //合計を返す
}

$bbb = aaa(4105);         //3つのパラメータを指定してaaa関数を実行
echo "合計は{$bbb}です。\n";  //合計は19です。


//②可変パラメータありの場合(foreach文のパターン)
function ccc(...$c1) {    //パラメータをいくつでも指定できる状態
  $cv = 0;                //演算結果を代入する変数の宣言
  foreach ($c1 as $c2) {  //$c1の値をつどつど$c2に代入
    $cv += $c2;           //引数の加算演算
  }
  return $cv;             //合計を返す
}

$ddd = ccc(4105);         //パラメータを3つ指定してaaa関数を実行
echo "合計は{$ddd}です。\n";  //合計は19です。


//③可変パラメータありの場合(for文のパターン)
function eee(...$e1) {              //パラメータをいくつでも指定できる状態
  $ev = 0;                          //演算結果を代入する変数の宣言
  for ($i=0; $i<count($e1); $i++) { //forループの初期値・条件・更新処理を指定
    $ev += $e1[$i];                 //引数の加算演算
  }
  return $ev;                       //合計を返す
}

$fff = eee(4105);         //パラメータを3つ指定してeee関数を実行
echo "合計は{$fff}です。\n";  //合計は19です。

可変パラメータは値をArray型にして無制限に指定できる状態のパラメータです。

可変パラメータは可変長引数とも呼ばれます。

 

上記①のスクリプトにあるaaa関数は通常のパラメータです。

この場合は、aaa関数の実行時に指定できるパラメータの数は常に3つに限定されます。

 

そこで②や③のスクリプトのように、関数のパラメータに ...$〇〇 と記述して可変パラメータを指定します。

こうすることで、その関数を実行する際に指定するパラメータの数は1つ以上であればいくつでも指定することができます。

 

なおこの可変パラメータは、Array型として引数を+=で代入していきます。

 

 

また、同一の関数のパラメータに可変パラメータと通常のパラメータを混在させることは可能です。

しかしこの場合は、可変パラメータはパレンティス(丸括弧)の末尾に記述しなければならない、というルールがあります。

 

可変パラメータはいくつでも値を+=で代入していけるので、可変パラメータの後ろに通常のパラメータを記述しても、その通常パラメータには存在意義がありません。

可変パラメータが末尾にない場合は、PHPはErrorを出してスクリプトを強制終了させてきます。

 

 

以上です。