標準入力
<?php
// 標準入力がHelloの場合こんにちはを出力
$greeting = trim(fgets(STDIN));
if ($greeting == "Hello") {
echo "こんにちは\n";
}
?>
<?php
// 1. 標準入力から文字列を 1 個受け取る
// 2. その文字列が「Hello」に等しい場合、次のメッセージを表示する
// こんにちは
// 3. 「Hello」に等しくない場合、次のメッセージを表示する
// AAAはHelloではない ※AAAに、その文字列を当てはめる
$name = trim(fgets(STDIN));
if ($name == "Hello") {
echo "こんにちは\n";
} else {
echo $name . "はHelloではない\n";
}
?>
文字変換
<?php
// ファイル名に含まれる長さ 2 以上のハイフンをすべて長さ 1 にしたファイル名を文字列で出力してください。
// ファイル名の文字列は100字以内
$stdin = trim(fgets(STDIN));
for($i = 100; $i >= 1; $i--){
$repeat_count = $i;
$text = str_repeat("-", $i);
$stdin = str_replace($text, "-", $stdin);
}
echo $stdin;
?>
複数行入力
<?php
// ・1 行目には、あなたの食べたい料理名を表す文字列 S が与えられます。
// ・2 行目には、与えられるメニューの単語数を表す整数 N が与えられます。
// ・3 行目には、メニュー名を表す単語の文字列 T_i (1 ≦ i ≦ N) が半角スペース区切りで与えられます。
// ・入力は全部で 3 行となり、最終行末尾に改行が一つ入ります。
// 与えられたメニューがあなたの食べたい料理であれば "Yes" を、そうでなければ "No" を出力してください。
// 標準入力を一行ずつ配列に代入
while ($stdin = trim(fgets(STDIN))) {
$stdin_array[] = $stdin;
}
$my_menu = $stdin_array[0];
$menu_count = --$stdin_array[1];
$menu_array = explode(' ',$stdin_array[2]);
for($i = 0; $i <= $menu_count; $i++){
$menu_word = $menu_array[$i];
// "Yes" を、そうでなければ "No"
if ($my_menu == $menu_word) {
echo "Yes";
break;
} elseif ($my_menu != $menu_word && $i == $menu_count) {
echo "No";
break;
}
}
?>
多重ループ
多次元配列
<?php
// ・1 行目にクラスの人数を表す整数 N が与えられます。
// ・続く N 行のうちの i 行目 (1 ≦ i ≦ N) には、i 番目の生徒が投票したクラスメイトの名前 a_i が与えられます。
// ・入力は合計で N + 1 行となり、入力値最終行の末尾に改行が 1 つ入ります。
// ・最も得票数の多い人は 1 人のみです。
while ($stdin = trim(fgets(STDIN))) {
$stdin_array[] = $stdin;
}
$num_peaple = $stdin_array[0];
for($i = 1; $i <= $num_peaple; $i++) {
$count = 0;
for($j = $i; $j <= $num_peaple; $j++) {
if ($stdin_array[$i] == $stdin_array[$j]) {
$count++;
}
}
// 多次元配列値追加
$count_array[] = [$stdin_array[$i], $count];
}
// 抽出
$cols = array_column($count_array, 1);
// echo print_r($cols);
array_multisort($cols, SORT_DESC, $count_array);
// echo print_r($count_array);
echo $count_array[0][0];
?>