Menu
Coddy logo textTech

'array_map' とカスタム関数

CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 40/68。

strtoupper のような組み込み関数は array_map() とうまく連携しますが、真の力は独自のカスタム関数を使用することにあります。これにより、正確なニーズに合わせた特定の変換を作成できます。

array_map() でカスタム関数を使用するには、第1引数として関数名を文字列で渡すだけです。作成するカスタム関数は、1つのパラメータ(現在の配列要素)を受け取り、変換された値を返す必要があります。

<?php
function doubleNumber($num) {
    return $num * 2;
}

$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// 結果: [2, 4, 6, 8, 10]
?>

このアプローチにより、各要素の処理方法を完全に制御できます。カスタム関数内で複雑な計算や文字列操作、その他のロジックを実行できるため、array_map() はデータ変換タスクにおいて非常に汎用性が高くなります。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

challenge icon

チャレンジ

簡単

2つの入力が与えられます。1つはカンマ区切りの摂氏(Celsius)温度のリスト、もう1つは変換先の単位(華氏の場合は F、ケルビンの場合は K)です。最初の入力には 0,10,20,30,100 という形式の文字列として温度が含まれており、2番目の入力は変換タイプを示す1文字です。

両方の入力を読み込み、カンマ区切りの温度を数値の配列に変換してください。摂氏温度をターゲットの単位に変換するカスタム関数を作成し、そのカスタム関数で array_map() を使用してすべての温度を変換し、変換された各温度を小数点以下2桁に丸めて、それぞれ別の行に出力してください。

変換式:

  • 摂氏から華氏へ: (C × 9/5) + 32
  • 摂氏からケルビンへ: C + 273.15

入力形式:

  • 1行目: カンマ区切りの摂氏温度(例: 0,10,20,30,100
  • 2行目: 変換先の単位 - F または K(例: F

期待される出力: 変換された各温度を、小数点以下2桁に丸めて、それぞれ別の行に出力します。

チートシート

関数名を文字列として渡すことで、カスタム関数を array_map() で使用できます。カスタム関数は1つの引数(現在の配列要素)を受け取り、変換後の値を返す必要があります。

<?php
function doubleNumber($num) {
    return $num * 2;
}

$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// 結果: [2, 4, 6, 8, 10]
?>

このアプローチにより、要素の処理を完全に制御できるようになり、関数内での複雑な計算、文字列操作、または任意のカスタムロジックが可能になります。

自分で試してみよう

<?php
// カンマ区切りの温度を読み込む
$temperatures = fgets(STDIN);

// 対象の単位(FまたはK)を読み込む
$unit = trim(fgets(STDIN));

// カンマ区切りの文字列を数値の配列に変換する
$tempArray = explode(',', trim($temperatures));

// TODO: 以下にコードを記述してください
// 摂氏を対象の単位に変換するカスタム関数を作成する
// array_map() を使用して、すべての温度に変換を適用する
// 変換された各温度を、小数点以下2桁に丸めて、個別の行に出力する

?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン