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

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

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

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

Q&A

解決済

1回答

922閲覧

Noticeエラーについて

tohma05

総合スコア46

PHP

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

0グッド

0クリップ

投稿2020/08/22 06:05

編集2020/08/22 07:05

Kindle書籍「PHP入門」で学習中です。
下記のコードでは、Notice:Undefind index:のエラーが表示されるようですが、

array(0) {
}
array(0) {
}

と表示されるだけです。

◯質問 なぜ、array(0){} array(0){} と表示されるのでしょうか。(エラー表示が見当たりません。)

◯参考

書籍の記述では、
値がセットされていない連想配列のキー(インデックス)を参照しようとするとNoticeエラーがでます。
最初にWebブラウザに表示された時点では、$_POSTはキーがない空の連想配列です。$name=$_POST['name'];でこの段階ではまだ存在していないキーの値を参照して、$name変数に代入しようとしています。これはNoticeエラーになります。$email=$_POST['email'];、$subject=$_POST['subject'];、$body=$_POST['body'];も同様です。
なので4つのNoticeエラーが表示されます。

書籍は、XAMMPですがMAMPを使っています。

◯対応

ChromeDeveloperToolのconsoleでは、

① jquery-migrate-3.0.0.min.js:2 JQMIGRATE: Migrate is installed, version 3.0.0
② form1.php:1 Unchecked runtime.lastError: The message port closed before a response was received.
③ DocsOpener.js:1 [ WCER: Connected to Chrome Extension Hot Reloader ]
④ form1.php:1 Unchecked runtime.lastError: The message port closed before a response was received.

と表示されます。

②④につきましては、エラーの原因ではないように思われます。

ご教授いただければと思います。

PHP

1<?php 2 3echo "<pre>"; 4var_dump($_POST); 5echo "</pre>"; 6 7$errors = array(); 8 9 10 $name = $_POST['name']; 11 $email = $_POST['email']; 12 $subject = $_POST['subject']; 13 $body = $_POST['body']; 14 15 if($name === ""){ 16 17 $errors['name'] = "お名前が入力されていません。"; 18 19 } 20 21 22 if ($email === ""){ 23 $errors['email'] = "メールアドレスが入力されていません。"; 24 25 } 26 27 28 if($body === "") { 29 $errors['body'] = "お問い合わせ内容が入力されていません。"; 30 } 31 32 33 34 echo "<pre>"; 35 var_dump($errors); 36 echo "</pre>"; 37 38 ?> 39 40<!DOCTYPE html> 41<html> 42<head> 43 <meta charset="UTF-8"> 44 <title>お問い合わせ</title> 45</head> 46<body> 47 48

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

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

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

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

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

phper.k

2020/08/22 06:15

質問がなんなのか書いていないですよ
m.ts10806

2020/08/22 08:07

>Notice:Undefind index:のエラーが表示されるようですが、 何の話でしょうか。他人事になっています。
m.ts10806

2020/08/22 08:08

あぁ質問の中間に書いてあったわけですね。失礼。 前提や背景はなるべく先に書いた方が良いですよ。一応、読み手への配慮も必要です。
guest

回答1

0

ベストアンサー

phpにはエラーのレベルに応じて表示・非表示を切り替える設定があります。

設定は

  • php.ini
  • httpd.confもしくは.htaccess
  • ソースコード

に記述することが可能です。ソースコードには書かれていないようですので、php.iniかhttpd.confもしくは.htaccessのどれかにその設定が書かれているのだと思います。
php.iniだとしたら

ini

1error_reporting = E_ALL & ~E_NOTICE

httpd.conf/.htaccessだとしたら

php_value error_reporting 30711

こんな感じの記述がないか探してみてください。どのレベルのエラーを出力するかをこの設定で調整可能です。

投稿2020/08/22 07:21

KoichiSugiyama

総合スコア3041

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

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

m.ts10806

2020/08/22 08:09 編集

もしエラー出力レベルについて何も言及もない書籍なら、参考書としては不適当ですね。
tohma05

2020/08/23 23:14

出力レベルの設定方法があるのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問