チャレンジ:ユニークアイテムのフィルター
CoddyのPHPジャーニー「論理とフロー」セクションの一部。レッスン 68/68。
チャレンジ
簡単1つの入力として、重複を含む可能性のあるカンマ区切りのアイテム文字列を受け取ります。
入力は次の形式の文字列です:apple,banana,apple,orange,banana,grape,apple
入力文字列を読み込み、アイテムの配列に分割してください。array_filter() とカスタムコールバック関数を使用して重複するアイテムを削除し、各ユニークなアイテムの最初の出現のみを保持します。
これを実現するために、どのアイテムが既に出現したかを追跡するコールバック関数を作成します。コールバックは、初めて遭遇したアイテムに対しては true を、重複に対しては false を返す必要があります。コールバックの外側で変数を使用し、use (&$seen) を使って参照渡しでキャプチャすることで、array_filter がコールバックを呼び出す間、更新内容を保持し続けることができます。
フィルタリング後、各ユニークなアイテムを元の入力で最初に出現した順序で、それぞれ別の行に出力してください。
入力形式:
- カンマ区切りのアイテムを含む1行(例:
apple,banana,apple,orange)
期待される出力: 各ユニークなアイテムを、入力での最初の出現順に、それぞれ別の行に出力します。
自分で試してみよう
<?php
// 入力を読み込む
$input = trim(fgets(STDIN));
// 入力を配列に分割する
$items = explode(',', $input);
// TODO: 以下にコードを記述してください
// 重複を削除するために、カスタムコールバック関数と一緒に `array_filter()` を使用してください
// 各ユニークなアイテムを個別の行に出力する
?>論理とフローのすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ