Menu
Coddy logo textTech

'array_map' とカスタム関数

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

strtoupper のような組み込み関数は array_map() と相性よく動作しますが、本当の力は自分で作成した custom 関数を使用することから生まれます。これにより、必要にぴったり合う特定の変換を作成できます。

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

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

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

このアプローチでは、各要素をどのように処理するかを完全に制御できます。custom function 内で複雑な計算、文字列操作、その他のロジックを実行できるため、データ変換タスクにおいてarray_map()は非常に柔軟です。

challenge icon

チャレンジ

簡単

2つの入力を受け取ります。1つはCelsiusのtemperaturesをcommaでseparatedしたリスト、もう1つはconversionのtarget unit(Fahrenheitの場合はF、Kelvinの場合はK)です。1つ目の入力には、0,10,20,30,100という形式のtemperaturesがstringとして含まれ、2つ目の入力はconversion typeを示す1文字です。

両方の入力をReadし、commaでseparatedされたtemperaturesをnumbersのarrayにconvertし、Celsius temperatureをtarget unitにconvertするcustom functionをCreateし、custom functionとarray_map()を使用してall temperaturesを変換し、各converted temperatureをseparate lineにPrintします。小数点以下2 placesにroundedしてください。

conversion formulas:

  • CelsiusからFahrenheitへ: (C × 9/5) + 32
  • CelsiusからKelvinへ: C + 273.15

Input format:

  • 1行目: Celsiusのcommaでseparatedされたtemperatures(例: 0,10,20,30,100
  • 2行目: target conversion unit - FまたはK(例: F

Expected output: 各converted temperatureをseparate lineにPrintし、小数点以下2 placesにroundedします

自分で試してみよう

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

// 目標単位(F または K)を読み取る
$unit = trim(fgets(STDIN));

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

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

?>
quiz icon腕試し

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

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

自分で練習してみよう: PHPオンラインコンパイラ