ホームページ > バックエンド開発 > PHPチュートリアル > PHP 通知未定義インデックス

PHP 通知未定義インデックス

WBOY
リリース: 2024-08-29 13:00:59
オリジナル
793 人が閲覧しました

PHP の未定義インデックスは、実際には存在しない値や変数にアクセスしようとすると発生するエラーです。未定義インデックスは、永続化されない変数にアクセスしようとすると発生する通常のエラーです。たとえば、インデックスにアクセスしようとしている配列は実際には存在しないため、このシナリオでは PHP で未定義のインデックスを取得します。ここでの未定義は、その値が定義されておらず、それにアクセスしようとしていることを意味します。

広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

PHP 通知未定義インデックスの構文

PHP では未定義のインデックスに対してそのような構文は定義されていません。これは、実際には存在しない、または値が割り当てられていないコード内の値や変数にアクセスしようとしたときに発生する一種のエラーであるためです。コード内のどこかの値にアクセスしようとしています。

$myarray = array(value1, value2, value3, so on..)
$myarray[value_does_not_exists]
ログイン後にコピー

上記の構文行では、配列内に存在しないキーを渡すことによって配列にアクセスしようとしています。したがって、これにより、実行時に未定義のインデックス エラーがスローされます。

プログラミング中にこれを行う方法の一例を見てみましょう:

コード:

$myarray = array(100, 200, 300, 400)
$myarray[1000]
ログイン後にコピー

この方法で、PHP でこのエラーを再現できますが、PHP で isst() メソッドを使用して、そのような状況でもコードが動作するようにすることで、このエラーを防ぐことができます。

PHP では未定義のインデックスに通知はどのように機能しますか?

現時点では、未定義のインデックスは一種の例外、または PHP のエラーと言えることがわかっています。これは、プログラム内に実際には存在しない変数にアクセスしたい場合に発生します。これには対処する必要があります。そうでない場合は、アプリケーションの適用に重大な問題が発生し、プログラムが終了する可能性があります。 PHP には、プログラム内でこの種のエラーを処理するためのメソッドがいくつか定義されています。

ここでは、コードの 1 つのサンプルとその動作、これがプログラム内でどのように発生するか、およびどのように処理されるべきかを見ていきます。

例:

コード:

<?php
// Your code here!
$myarray = array('200','300','400', '500', '600', '700', '1000');
echo $myarray[4];
echo $myarray['Hello '];
?>
ログイン後にコピー

上記のコード行では、「$myarray」という名前の配列を 1 つ作成し、その中にいくつかの文字列整数を入れてその値を初期化しています。 2 行目では、配列の変数に割り当てられた値とインデックスを使用してその変数にアクセスしようとしています。したがって、インデックス「4」が配列内に存在するため、この行は期待どおりに正常に機能しますが、この行の直後に、キーによって配列要素にアクセスしようとしている別の行があります。したがって、この場合は、行番号が記載された Notice: Unknown Index in PHP を取得します。次に、コード内でこの問題が発生するのを防ぐ方法を見ていきます。このため、配列の要素または値にアクセスする前に使用できる 2 つのメソッドが PHP で利用可能です。

以下にメソッドを示します:

1. array_key_exists()

このメソッドは、値にアクセスする前に、キーが配列内に存在するかどうかをチェックするために使用されます。このメソッドは、配列要素にアクセスしようとしているが、これについては不明な場合に使用できます。したがって、変数の値を使用する前に、このメソッドを使用して要素またはキーが存在するかどうかを確認できます。

このメソッドは、入力パラメーターとして 2 つのパラメーターを受け取ります。最初の行はキーで、2 行目は配列そのものです。

メソッドの構文を見てみましょう

署名:

array_key_exists(your_key, your_array)
ログイン後にコピー

ここでは 2 つのパラメータを渡し、渡したキーは配列全体にチェックインします。戻り値の型はブール型です。キーが配列内に存在する場合は true を返し、キーが存在しない場合は false を返します。

2. isset()

このメソッドは、値にアクセスする前に、変数がプログラムに設定されているかどうかもチェックします。また、NULL 変数もチェックします。それは 2 つのことを実行します。最初に変数が定義されているかどうかをチェックし、もう 1 つは変数が NULL であってはいけないことをチェックします。

署名:

isset(variables);
ログイン後にコピー

ここで、プログラム内でアクセスする前にチェックしたい変数を渡すことができます。このメソッドの戻り値の型もブール型です。変数が見つかり、それが NULL でない場合は、値として true を返します。前の条件が指定されていない場合は、False が返されます。

PHP 通知の未定義インデックスの例

以下は、PHP Notice 未定義インデックスの例です。

例 #1

この例では、配列にアクセスしないキーにアクセスしようとしているため、プログラムの実行中に PHP で Notice Unknown Index エラーが発生します。

コード:

<?php
// Your code here!
// creating an array here
$myarray = array(0=>'Hi',1=>'Hello',2=>'To', 3=>'All', 4=>'Stay', 5=>'Safe', 6=>'Enjoy !!');
//try to print values from array
echo $myarray[0]."\n";
echo $myarray[1]."\n";
echo $myarray[2]."\n";
//trying to access the element which does not exists.
echo $myarray['World']."\n";
?>
ログイン後にコピー

出力:

PHP 通知未定義インデックス

Example #2

To prevent this error while occurring in program execution.

Code:

<?php
// Your code here!
// creating an array here
$myarray = array(0=>'Hi',1=>'Hello',2=>'To', 3=>'All', 4=>'Stay', 5=>'Safe', 6=>'Enjoy !!');
//try to print values from array
echo $myarray[0]."\n";
echo $myarray[1]."\n";
echo $myarray[2]."\n";
//trying to access the element which does not exists.
if(array_key_exists('World', $myarray)){
echo "Key exists in array !!";
}else {
echo "Key does not exists in array !! :)";
}
?>
ログイン後にコピー

Output:

PHP 通知未定義インデックス

Conclusion

Notice Undefined Index is a kind of error we got in PHP when we try to access the non-existing element from the array or in our program. One more case is that it can occur when we try to access a NULL value in the program. So we can use two methods, isset() and array_key_exists() methods in PHP, to overcome this error in the application.

以上がPHP 通知未定義インデックスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート