【初心者PHP基礎】関数をつかってみよう

スポンサーリンク
PHP

プログラムを組んでいると、何度も似た処理を書くことがあります。

関数のつくりかた

関数名・・・半角英数で書きます。最初の文字は英語にしましょう。
引数・・・・関数を呼び出すとき、関数に渡すデータです。複数個登録可能です。
戻り値・・・処理の結果を戻り値として返すことができます。

関数をつかってみよう

こんな処理を考えてみてください。

1年生から6年生までの国語のテストの点数のクラスの平均値をそれぞれ求めるプログラムを組む仕事が来ました。

それぞれのクラス全員のテストの点数結果は以下の通りです。

〇×小 3年1人目2人目3人目4人目5人目6人目7人目
Aクラス75787656719350
Bクラス 34555041487280
Cクラス44925057375885

各クラスきれいに7人づつしかいない学年です(ツッコまないでください)。

まずは、これらを扱いやすく、配列にしましょう。

すべて国語の点数という同じ意味のデータですので、普通の配列で管理すると扱いやすそうです。

$scoreA = [75, 78, 76, 56, 71, 93, 50];
$scoreB = [34, 55, 50, 41, 48, 72, 80];
$scoreC = [44, 92, 50, 57, 37, 58, 85];

それぞれの配列を、foreach文を使って合計を求めてから、人数で割って平均を求めます。

$scoreA = [75, 78, 76, 56, 71, 93, 50];
$scoreB = [34, 55, 50, 41, 48, 72, 80];
$scoreC = [44, 92, 50, 57, 37, 58, 85];

// Aクラスの平均を求める
$sumA = 0; // 0で初期化

// 合計を求める
foreach ($scoreA as $value) {
    $sumA += $value;
}

// 個数で割って、平均を求める
$averageA = $sumA / count($scoreA);


// Bクラスの平均を求める
$sumB = 0; // 0で初期化

// 合計を求める
foreach ($scoreA as $value) {
    $sumB += $value;
}

// 個数で割って、平均を求める
$averageB = $sumB / count($scoreB);


// Cクラスの平均を求める
$sumC = 0; // 0で初期化

// 合計を求める
foreach ($scoreC as $value) {
    $sumC += $value;
}

// 個数で割って、平均を求める
$averageC = $sumC / count($scoreC);

このやり方でも求められないこともないのですが、同じような処理のくり返しです。

このような場合は、関数という形で処理を登録しておいて、それを呼び出すことでもっと簡潔に書くことができます。

それでは、平均値を求めてくれる関数、「getAvarage」を作ってみます。

function getAvarage($scoreArray){
    // 合計を保持しておく変数。0で初期化。
    $sum = 0;
    
    // 合計を求める
    foreach ($scoreArray as $value) {
        $sum += $value;
    }

    // 合計を配列の個数で割って、平均を算出
    $average = $sum / count($scoreArray);

    // 求めた平均値を返す(リターンする)
    return $average;
}

この関数は呼び出すときに、引数として点数の配列を与えると、平均値を返してくれます。

以下のように書くことで使えます。

$scoreA = [75, 78, 76, 56, 71, 93, 50];
$scoreB = [34, 55, 50, 41, 48, 72, 80];
$scoreC = [44, 92, 50, 57, 37, 58, 85];

// Aクラスの平均を求める
$averageA = getAvarage($scoreA);


// Bクラスの平均を求める
$averageB = getAvarage($scoreB);


// Cクラスの平均を求める
$averageC = getAvarage($scoreC);


function getAvarage($scoreArray){
    // 合計を保持しておく変数。0で初期化。
    $sum = 0;
    
    // 合計を求める
    foreach ($scoreArray as $value) {
        $sum += $value;
    }

    // 合計を配列の個数で割って、平均を算出
    $average = $sum / count($scoreArray);

    // 求めた平均値を返す(リターンする)
    return $average;
}

だいぶ、すっきりしました。

このように、似たような処理は関数としてまとめることで、可読性が上がるので、積極的に使いましょう。

コメント

タイトルとURLをコピーしました