質問への追記・修正の依頼の欄にも書きましたが、下記の意味がわからないです。
$cと$a行目(1-3行目までのいずれ)の$b番目の数字が一致した場合は、
手元に、1ポイント増えていきます。
期待する出力値
0
1
2
各行の$b列目の値が$cと一致していたらポイントが増えるのであれば、各行の2列めである2, 2, 1が$cである1と一致するか評価され、出力は0, 0, 1になるのではないですか?
というか、社会一般に通じる「ループのインデックスである整数値」を意味する i とかは別として、1文字変数は混乱のもとなので使わないでください。人に見せるコードならなおさらです。
以下のコードは、先述のわたしの理解が正しいという前提のものです。
php
1<?php
2class DummySTDIN {
3 private $fgetsCount = 0;
4 private $source = <<<EOT
53 2 1
62 2
71 2
81 1
9EOT;
10
11 public function fgets() {
12 return explode(PHP_EOL, $this->source)[$this->fgetsCount++];
13 }
14}
15$dummySTDIN = new DummySTDIN();
16// NOTE: ここから上は気にしない
17
18// FIXME: ここから下の `$dummySTDIN->fgets()` を `fgets(STDIN)` に読み替えること
19// 与えられる文字列の1行目には、
20// - 「検証する要素の行数」
21// - 「各行において評価する値が格納されている列番号」
22// - 「正答」
23// がスペース区切りで与えられる
24list($rows_qty, $check_col, $answer) = explode(' ', $dummySTDIN->fgets());
25
26// 列番号をインデックスになおす
27$check_col = intval($check_col, 10) - 1;
28
29$points = 0;
30for($row = 0; $row < $rows_qty; $row++) {
31 // 検証中の行の値をスペースで区切って、 $check_col列の値を取得する
32 $answer_in_this_row = explode(' ', $dummySTDIN->fgets())[$check_col] ?? NAN;
33
34 // この行の値と正答値が一致するなら$pointsに加算する
35 $points += $answer_in_this_row === $answer;
36
37 // $pointsを出力する
38 echo $points . PHP_EOL;
39}
40