报错:「注意: 未定義の変数」、「注意: 未定義のインデックス」、「警告: 未定義の配列キー」、还有「注意: 未定義のオフセット」 (PHP を使用)
P粉046878197
P粉046878197 2023-07-20 11:17:02
0
2
619

PHP スクリプトを実行していますが、次のようなエラーが発生し続けます:

注意: 未定義の変数: C:wampwwwmypathindex.php の 10 行目にある my_variable_name

注意: 未定義のインデックス: my_index C:wampwwwmypathindex.php 行 11

警告: C:wampwwwmypathindex.php の 11 行目に未定義の配列キー「my_index」があります

10行目と11行目は次のようになります:

リーリー

これらのエラー メッセージは何を意味しますか?

なぜ突然現れるのでしょうか?私はこのスクリプトを数年間使用していますが、これまでに問題が発生したことはありません。

これらのエラーを修正するにはどうすればよいですか?


P粉046878197
P粉046878197

全員に返信 (2)
P粉116631591

###これを試して### リーリー

または、迅速で簡単な解決策もあります:

リーリー
いいねを押す+0
    P粉722521204

    このエラー メッセージは、PHP プログラマが存在しない変数 (または配列要素) にアクセスするときにタイプミスや間違いを検出できるようにすることを目的としています。したがって、優れたプログラマは次のことを行う必要があります:

    1. 各変数または配列キーが使用する前に定義されていることを確認してください。関数内で変数を使用する必要がある場合は、それをパラメーターとして関数に渡す必要があります。
    2. このエラーを確認し、他のエラーと同様に修正してください。これは、タイプミス、またはプロシージャが本来あるべきデータを返さないことを示している可能性があります。
    3. プログラマーの制御が及ばないまれなケースにのみ、このエラーを回避するコードを追加する必要があります。しかし、それが盲目的な習慣になってはいけません。

    注/警告: 未定義の変数

    PHP では変数の宣言は必要ありませんが、スクリプトの後半で使用される変数に値を割り当て忘れる可能性があるセキュリティ ホールやバグを避けるために、宣言することをお勧めします。変数が宣言されていない場合、PHP は E_WARNING レベルのエラーを発行します。

    この警告は、プログラマーが変数名のスペルミスや同様のエラー (たとえば、条件が false と評価された場合に変数に値を割り当てる場合など) を検出するのに役立ちます。さらに、初期化されていない変数に関しては他にも問題が発生する可能性があります。 PHP マニュアルに記載されているように、

    これは、変数がインクルードされたファイルから値を取得する可能性があり、初期化されていない変数にアクセスするときに予期される null 値の代わりにこの値が使用されることを意味します。これにより、予期しない結果が生じる可能性があります。これを回避するには、使用する前に PHP ファイル内のすべての変数を初期化することをお勧めします。

    この問題に対処するにはいくつかの方法があります:

    1. 推奨されるアプローチは、使用する前に各変数を宣言することです。この方法では、実際に間違いを犯して存在しない変数を使用しようとした場合にのみ、このエラーが表示されます。そのため、このエラー メッセージが表示されます。

      リーリー
    • 特殊なケースは、変数が定義されているが関数内で参照できない場合です。 PHP では、関数には独自の変数スコープがあります。関数で外部変数を使用する必要がある場合は、その値を関数のパラメーターとして渡す必要があります:

      リーリー
    1. エラーを抑制するには、null 合体演算子を使用します。ただし、この方法では、間違った変数名を使用したことを PHP が通知できないことに注意してください。

      リーリー

      古い PHP バージョン ( リーリー

      これは本質的にエラー抑制ですが、特定のエラーに対してのみ機能することに注意してください。したがって、PHP が変数を初期化されていないものとしてマークすることによって、ユーザーを支援できなくなる可能性があります。

    2. @ 演算子を使用してエラーを抑制します。歴史的な理由からここに保管されていますが、真剣に考えれば、これは決して起こるべきではありませんでした。

    注: 最初の点のみを実装することを強くお勧めします。

    注: 未定義のインデックス/未定義のオフセット/警告: 未定義の配列キー

    このヒント/警告は、ユーザー (または PHP) が配列の未定義のインデックスにアクセスしようとすると発生します。

    内部配列

    内部配列、つまりコード内で定義された配列を扱うときも、まったく同じ態度を採用する必要があります。使用する前にすべてのキーを初期化します。こうすることで、エラーは本来の役割を果たすことができ、コード内のエラーをプログラマに通知することができます。したがって、処理方法は同じです:

    提案: 配列要素を宣言します:

    リーリー

    特殊なケースは、関数が配列またはその他の値 (null や false など) を返す場合です。配列要素にアクセスする前に、次のようなテストを実行する必要があります。

    リーリー

    外部配列

    外部配列 ($_POST/$_GET/$_SESSION または JSON 入力など) の場合は、プログラマがこれらの配列の内容を制御できないため、状況は異なります。したがって、特定のキーが存在するかどうかを確認したり、欠落しているキーにデフォルト値を割り当てたりすることは合理的です。

    • PHP スクリプトに HTML フォームが含まれている場合、当然のことながら、最初の読み込み時にはフォームのコンテンツは存在しません。したがって、そのようなスクリプトはフォームが送信されたかどうかをチェックする必要があります。

      リーリー
    • チェックボックスなどの一部の HTML フォーム要素は、選択されていない場合、サーバーに送信されません。この場合、null 合体演算子を使用してデフォルト値を割り当てるのが合理的です。

      リーリー
    • オプションのクエリ文字列要素または Cookie も同じ方法で処理する必要があります。

      リーリー

    ただし、割り当てはスクリプトの先頭で行う必要があります。すべての入力を検証し、それをローカル変数に割り当て、コード全体で使用します。こうすることで、アクセスするすべての変数が意図的に存在することになります。

    いいねを押す+1
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!