質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

5863閲覧

syntax error, unexpected end of fileと表示されます。

UpaZiro

総合スコア17

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/11/21 09:19

前提・実現したいこと

PHPで数列を入力し半角スペースで分割し、そののちに昇順、降順にソートする、最大、最小を抜き出すというシステムを作っています。 
以下はそのinput画面なのですが、エラーが起きてしまいました。
括弧の閉じ忘れでしょうか?

また、end of fileのエラーの探し方がわかりません。
効率のいい探し方があれば教えてください。

発生している問題・エラーメッセージ

Parse error: syntax error, unexpected end of file in C:\ファイル名(伏せさせていただきます) on line 129

該当のソースコード

PHP

1<?php 2//変数宣言 3$input = ""; 4//エラー処理① 5if(isset($_GET['state']) && $_GET['state'] == 'input'){ 6 //配列の作成 7 $Data = []; 8 $Oganized_Data = []; 9 $index_number = []; 10 //エラースイッチ、メッセージの初期化 11 $switch = 1; 12 $msg = ""; 13 $msg2 = ""; 14 //入力情報の保存 15 $input = $_GET['sequence']; 16 17 //全体精査:入力の有無 18 if($_GET['sequence'] == ""){ 19 $msg = "半角数字で数列を入力してください"; 20 $switch = 2; 21 } 22 else{ 23 //単体精査:入力が数値かどうかの判定 24 //「' '」で分割し、一度配列に格納してゆきます 25 $Data = explode(" ",$_GET['sequence']); 26 //配列を再び別の配列へと移してゆきます 27 //この時、何も入力値がない配列は要素を移しません 28 foreach($Data as $num){ 29 if(!($num == "") && !($num == " ")){ 30 $Oganized_Data[] = $num; 31 } 32 else{ 33 $msg2 = "空白の入れ方に誤りがあります。"; 34 $switch = 2; 35 } 36 //整理された配列に対して正しく数値が入力されているかの確認を行います 37 foreach($Oganized_Data as $index => $num){ 38 if(!is_numeric($num)){ 39 $msg = "入力できるのは半角数字のみです"; 40 $switch = 3; 41 //エラーの出た数列の番号を保存します 42 $index_number[] = ($index + 1); 43 } 44 } 45 } 46 47 if($switch == 1){ 48 //エラースイッチが「1」である時の処理 49 $error = ""; 50 header('Location:ep17-task_output_improvement-2.php?num1='.$_GET['sequence']); 51 exit(); 52 } 53 else{ 54 //エラースイッチが「1」以外の時の共通処理 55 $error = "※入力に誤りがあります"; 56 } 57} 58?> 59 60<!DOCTYPE html> 61<html lang = "ja"> 62 63<head> 64 <meta charset="UTF-8"> 65 <title>バブルソート</title> 66 <style> 67 .error_message{ 68 color:red; 69 } 70 </style> 71</head> 72 73<body> 74 75<h1>数列を並べ替えてくれるシステムです</h1> 76<p>数字を半角で入力してください</p> 77 78<form method="get" action="index.php"> <!-- この書き方をすると同じファイルのphpに移ることが出来る--> 79 <table border="1"> 80 <tr> 81 <td> 82 数列 83 <?php 84 if(isset($_GET['state']) && $_GET['state'] == 'input'){ 85 if(!($switch == 1)){?> 86 <div class="error_message"></div> 87 <?php 88 } 89 } 90 ?> 91 </td> 92 <td colspan="2"><input type="text" name="sequence" value="<?php echo $input ?>"></td> 93 </tr> 94 <tr> 95 <td>並べ替え</td><td><input type="radio" name="mode1" value="descending_order" checked>降順</td><td><input type="radio" name="mode1" value="ascending_order">昇順</td> 96 </tr> 97 <tr> 98 <td>抜き出し</td><td><input type="radio" name="mode2" value="max" checked>最大値</td><td><input type="radio" name="mode2" value="min">最小値</td> 99 </tr> 100 <tr> 101 <th colspan="3"> <button type="submit" name="state" value="input">表示</button></th> 102 </tr> 103 </table> 104</form> 105 106<?php if(isset($_GET['state']) && $_GET['state'] == 'input'){?> 107<div class="error_message"> 108 <p><?php echo $error; ?></p> 109 <p><?php echo $msg; ?></p> 110 <?php if($switch == 3){ ?> 111 <p> 112 数列の 113 <?php 114 foreach($index_number as $num1){ 115 echo $num1."番目、"; 116 } 117 ?> 118 の入力に誤りがあります 119 </p> 120 <?php 121 } ?> 122 <p><?php echo $msg2; ?></p> 123</div> 124<?php 125}?> 126 127</body> 128 129</html>

試したこと

括弧の抜け忘れを一通り見ました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

PHP

1foreach($Data as $num){

このループを閉じていないような...

投稿2020/11/21 09:54

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

UpaZiro

2020/12/23 13:35

ありがとうございました!
guest

0

ベストアンサー

kazwedaさんの回答以上にシンプルな回答はできないので、
逆質問的な内容にいたします。

ループ処理のブロック構造は理解していらっしゃるようなので、
中括弧「{」と「}」の対がないと成立しないことはわかっていらっしゃると思います。
でも、目視での確認はできるに越したことはないですが、
5~6行でなく何十行も含まれていたりすると目視での確認も限界があるかもしれません。

phpのコードをどうやって書いていますか?
さすがにメモ帳じゃないでしょうけども。
せめて、文法チェックやコード入力支援のあるエディタを使うことで、
この手の残念なミスを防ぐことができます。
例えば、支援のあるエディタでは、「{」をタイプするだけで「}」が自動入力され、
入力するのを忘れてしまうことを防いでくれます。

手作業でインデントを加えて見やすくしようとしなくても、
自動的に整形ツールが動いてきれいに見せてくれますし、
きれいにならないときはどこか構造がおかしくなっています。
VScodeでもAtomでもEclipseやnetbeans ideでも、
何でもいいですが、ちゃんとエディタを仕込めば
コーディングの支援だけでなくリモートデバッグの支援なども加わって生産性が高まります。
(phpコードをステップ実行したり変数の内容をオンデマンドに確認したり、便利でしょ?)

投稿2020/11/23 02:54

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

UpaZiro

2020/12/23 13:34

返信遅くなりました! ありがとうございます! 支援ツールは後々入れようと思います!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問