《PHP8上級試験対策》array_filter()とarray_sum()の組み合わせの挙動を理解する

  • URLをコピーしました!

はじめに

PHP の配列操作では、array_filter()array_sum() を組み合わせることで条件付きの合計を求めることができます。試験問題では「偶数だけを抽出して合計する」ようなコードが登場することがありますが、実際の出力を正しく理解できていますか?この記事では、サンプルコードを使いながら挙動を解説します。

キーワード:array_filter / array_sum / 配列操作 / 偶数の合計 / コールバック関数

目次

サンプルコード

<?php
declare(strict_types=1); 
error_reporting(-1);

$arr = [1,2,3,4,5,6,7,8,9,10];
$sum = array_sum(
    array_filter($arr, function($v){
        return ($v % 2) == 0;
    })
);
var_dump($sum);

array_filter() の動き

array_filter() はコールバック関数が true を返した要素のみを残した配列を返します。

この場合、条件は「偶数かどうか」なので、結果は次のような配列です:

[1 => 2, 3 => 4, 5 => 6, 7 => 8, 9 => 10]
  • 元のキー(1, 3, 5, 7, 9)は保持されます
  • 値は 2,4,6,8,10 の偶数のみが残ります

array_sum() の動き

次に array_sum() が実行されます。配列 [2,4,6,8,10] の合計は:

2 + 4 + 6 + 8 + 10 = 30

誤答と正答の比較表

判定想定した挙動実際の挙動出力結果
❌ 誤答パターン1〜10の中で「奇数の合計」と勘違い偶数がフィルタされているのに気付かないint(25)
✅ 正答パターン偶数だけをフィルタして合計する[2,4,6,8,10] の合計を算出int(30)

実行結果

よって、実際の出力は次のようになります:

int(30)

「int(25)」と考えてしまうのは誤りです。

試験対策のポイント

  • array_filter() はキーを詰め直さずに返すため、戻り値の配列は「飛び番号」になる場合があります。
  • array_sum() はキーを無視して値を合計するため、偶数の合計=30 となります。
  • 配列操作問題では「戻り値の配列の形」と「その後の処理」を切り分けて考えることが重要です。

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次