長い間 PHP を勉強してきたので、今日は PHP の通知: 未定義のインデックスの解決策について学びます。意味が分からないかもしれませんが、この記事を読むと必ず新しいアイデアが生まれると思います。 。 褒美!
php 注意: 未定義のインデックスの問題、未定義のインデックス: コードにエラーがあることを意味します: 「変数はまだ定義されておらず、代入後に使用されています。」これは致命的ではありません。エラーが発生し、実行できません。 PHP コードは強制終了されますが、問題が発生する可能性があります...
データの読み取り時に表示されます:
Notice: 未定義のインデックス: 名前が含まれています。 .
注意: 未定義のインデックス: キーを入力してください…
ソース コードは次のとおりです:
name = isset ( name = isset(name=isset(_POST[‘name’]) ? filter_input(INPUT_POST, ‘name’, FILTER_SANITIZE_SPECIAL_CHARS) :htmlspecialchars($_GET[‘name’]); key = isset ( key = isset(key=isset(_POST[‘key’]) ? filter_input(INPUT_POST,‘key’,FILTER_SANITIZE_SPECIAL_CHARS) :htmlspecialchars($_GET[‘key’]);
問題分析:
未定義のインデックス: コードを参照します。エラーがあります:「変数はまだ定義されていません。値を割り当てる前に使用されます。」これは致命的なエラーではなく、実行を強制的に停止することはありません。 php コードを変更しますが、問題が発生する可能性があるため、変更することをお勧めします~~~~
解決策:
Use error_reporting = E_ALL & ~ php.ini の E_NOTICE を使用して、通知の表示をオフにし、そのような警告をシールドします。ただし、コードを変更することをお勧めします。コードは常により標準化された方法で記述される方が良いです。そうすれば、将来的には問題が少なくなります。 。
問題の原因: POST が存在するかどうかだけを確認し、_POST が存在するかどうかは確認せず、POST が存在するかどうかは確認せず、_POST が存在するかどうかを確認しなかったことが原因です。 _得る。
完璧な解決策: 次のように変更するだけです:
n a m e = i s s e t ( name = isset(name=isset(_POST[‘name’]) ? filter_input(INPUT_POST,‘name’,FILTER_SANITIZE_SPECIAL_CHARS) : isset($_GET[‘name’]) ? filter_input(INPUT_POST,‘name’,FILTER_SANITIZE_SPECIAL_CHARS) : ‘’; k e y = i s s e t ( key = isset(key=isset(_POST[‘key’]) ? filter_input(INPUT_POST,‘key’,FILTER_SANITIZE_SPECIAL_CHARS) : isset($_GET[‘key’]) ? filter_input(INPUT_POST,‘key’,FILTER_SANITIZE_SPECIAL_CHARS) : ‘’;
まず第一に、これはエラーではなく、警告です。したがって、サーバーを変更できない場合は、使用する前に各変数を定義する必要があります。
方法 1: サーバー構成を変更する
修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE
方法 2: 変数を初期化し、標準化された方法で記述します (変数の数が多いため、より面倒です)変数の)。しかし、まだ良い定義方法が見つかりません。アドバイスをいただければ幸いです。
方法 3:
每个文件头部加上:error_reporting(0); 如果不行,只有打开php.ini,找到display_errors,设置为display_errors = Off
今後、エラーは表示されなくなります。
方法 4:
做判断:isset($_GET["page"]) if-else判断
または、「@」を追加して、この行にエラーまたは警告がある場合に出力しないことを示します
例: @$page =$_GET["page" ]
方法 5:
file1.php文件把$xx变量付一个值,用post传递给file2.php,
file2.php に $xx の定義がなく、$yy=$xx を直接使用する場合、システムはエラーを報告します。 undifined Variable $xx", if file2.php ファイルが $xx=""; で始まる場合、file1.php の $xx 値を渡すことはできません。
file2.php里可以这样 if(!isset($xx)) $xx="";
推奨学習: 「PHP ビデオ チュートリアル 」
以上が未定義のインデックス (選択済み) の解決策について学びましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。