Menu
Coddy logo textTech

'array_search' によるキーの検索

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

in_array() は、ある値が配列内に存在するかどうかを教えてくれますが、時にはその値が具体的にどこにあるかを知る必要があります。array_search() 関数は、配列内の特定の値を検索し、それに対応するキーまたはインデックスを返します。

動作の仕組みは以下の通りです:

<?php
$players = ["Alice", "Bob", "Charlie", "Diana"];
$position = array_search("Charlie", $players);
echo $position;  // 出力: 2
?>

この関数は2つのパラメータを受け取ります。検索する値と、検索対象の配列です。値が見つかると、array_search() はキーを返します(インデックス配列の場合、これは0から始まる数値の位置になります)。

しかし、返される値には重要な違いがあります。値が見つかった場合、キーが返されます。値が見つからない場合、関数は false を返します:

<?php
$scores = [95, 87, 92, 78];
$found = array_search(92, $scores);    // 戻り値: 2
$notFound = array_search(100, $scores); // 戻り値: false
?>

この関数は、リーダーボードでプレイヤーが何位にランクされているかを確認したり、その後の処理のために特定の要素のインデックスを特定したりするなど、項目の位置や順位を特定する必要がある場合に特に便利です。

quiz icon腕試し

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

quiz icon腕試し

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

quiz icon腕試し

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

challenge icon

チャレンジ

簡単

2つの入力を受け取ります。JSON形式の製品名の配列と、検索する製品名です。両方の入力を読み込み、JSON文字列を配列に変換し、array_search()を使用して配列内の製品の位置を見つけ、その結果を出力してください。製品が見つかった場合は、そのインデックス位置を出力します。製品が見つからない場合は、"Product not found"を出力してください。

入力形式: 2行 - 1行目にはJSON配列(例: ["laptop","mouse","keyboard","monitor"])、2行目には検索する製品名が含まれます。

期待される出力: 製品の数値インデックス位置(0から開始)、または製品が配列内に存在しない場合はテキスト "Product not found"

チートシート

array_search()関数は、配列内の特定の値を検索し、対応するキーまたはインデックスを返します。

<?php
$players = ["Alice", "Bob", "Charlie", "Diana"];
$position = array_search("Charlie", $players);
echo $position;  // 出力: 2
?>

この関数は、検索する値と検索対象の配列の2つのパラメータを受け取ります。値が見つかった場合はキーを返し、見つからない場合はfalseを返します。

<?php
$scores = [95, 87, 92, 78];
$found = array_search(92, $scores);    // 返り値: 2
$notFound = array_search(100, $scores); // 返り値: false
?>

自分で試してみよう

<?php
// JSON配列の入力を読み込む
$jsonInput = fgets(STDIN);
$products = (array)json_decode($jsonInput, true);

// 検索する商品名を読み込む
$searchProduct = trim(fgets(STDIN));

// TODO: 以下にコードを記述してください
// array_search() を使用して商品の位置を見つける


// 結果を出力する
echo $result;
?>
quiz icon腕試し

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

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