PHP:array_count_values, in_array,

ポイント1:縦向きの配列に変更する方法
$arrColumn = [];
    for($i = 0; $i < $sizeN; $i++) {
      foreach ($arr[$i] as $key => $value) {
        if (!isset($arrColumn[$key])) {
          $arrColumn[$key] = [];
        }
        $arrColumn[$key][] = $value;
      }
    }

if (!isset($arrColumn[$key]))は、例えば、$arr[0] の配列において、
もし新しい配列$arrColumn[0]に値がなければ、キーが 0 で 値が、$arr[0][$key = 0] の値を代入する。
式で表すと、$arrColumn[0] = $arr[0][$key = 0] 。次に行われる処理は、
$arrColumn[1] = $arr[0][$key = 1], $arrColumn[2] = $arr[0][$key = 2]

    list($n, $m) = explode(' ', trim(fgets(STDIN)));
 // $n, $m を 整数に変更
    $sizeN = intval($n);
    $ngLineRain = intval($m);

    $arr = [];
    for ($i = 0; $i < $ngLineRain; $i++) {
        $arr[$i] = explode(' ', trim(fgets(STDIN)));
    }
    // 同じキーごとに配列化し直す。つまり、縦向きの配列に並び替え。
    $arrColumn = [];
    for($i = 0; $i < $sizeN; $i++) {
      foreach ($arr[$i] as $key => $value) {
        if (!isset($arrColumn[$key])) {
          $arrColumn[$key] = [];
        }
        $arrColumn[$key][] = $value;
      }
    }

    $ngResult = [];
    $correctResult = []; // $ngLineRain を下回った配列
    for($i = 0; $i < $sizeN; $i++) {
      foreach ($arrColumn[$i] as $key => $val) {
          if ($val >= $ngLineRain) {
              $ngResult[] = $i;
              break 1;
          } else {
              $correctResult[] = $i;
          }
      }
    }
    
    // 全て、$ngLineResult を下回った場合、wait を出力して、終わり。
    if (count($correctResult) === 0) {
        echo "wait";
        die();
    }
    
    $ans = '';
    if (count($ngResult) >= 1 && $sizeN === 1) {
        echo 1;
        die();
    } 
    $correctResultMuch = array_count_values($correctResult);
    $result = '';
    foreach ($correctResultMuch as $k => $v) {
        if ($v === $sizeN) {
            $result .= $k+1 . ' ';
        }
    }
    echo rtrim($result, ' ');