ホーム >  PHP >  「Notice: Undefined index」を解決するには

投稿日:   |  最終更新日:

「Notice: Undefined index」を解決するには

PHP制作

 以下のようなコードを実行したとき、「Notice: Undefined index」というエラーメッセージが発生します。

<?php
require('dbconnect.php');
$page = $_REQUEST['page'];
?>

「Notice: Undefined index」は定義されていない配列の要素を使用した場合に発生します。

原因

 このメッセージは、フォーム入力値やURLパラメータから値を受け取る処理でよく発生します。初回アクセスをしたとき、配列変数に何も入っていないため、「未定義の要素が使われている」とPHPは判断します。例えば、以下のような流れでエラーになります。

①「送信する」ボタンをクリック

②フォーム入力値を受け取る

③スクリプトに最初にアクセスしたときは$_POSTには何も入っていない。

④「Notice: Undefined index」のエラーメッセージが表示。

対処法

 そのスクリプトへの初回アクセス時と2回目以降のアクセスで処理を切り分けします。「$_REQUEST['page']に値が入っているときは…」という条件を設定する方法があります。以下のように変更します。

$page = isset($_REQUEST['page'])? $_REQUEST['page'] : NULL;

上の例は、$_REQUEST[’page’]に値が無い場合、NULLを返します。

解説

・isset関数は()内の変数に値がセットされていればtrue、いなければfalseを返します。

・$_REQUEST['page']に値がセットされている場合がTrueで、セットされていなければFalseです。

・?(クエスチョン)は三項演算子を意味します。

・?(クエスチョン)の左側(isset関数)を評価します。

・isset関数がTrueであれば:(コロン)の左側の$_REQUEST['page']を返します。

・isset関数がFalseであれば:(コロン)の右側のNULLを返します。

トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告