1. ホーム

お知らせ 未定義のオフセットソリューション

2022-02-23 04:38:28

今日、友人のサーバーデバッグを手伝っていたら、以前の404疑似静的wpが使えなくなり、試しに404エラーのページにアクセスしてみたら、結果の最初の部分が表示されました。

お知らせ Undefined offset: 1 in D:\wwwroot

DATA::³ Files³ Electronics Tools on line 5.

お知らせ Undefined offset: 2 in D:\wwwroot.jp on line 5

お知らせ Undefined offset: 2 in D:\wwwroot

お知らせ Undefined offset: 1 in D:\wwwroot.jp on line 12

この問題は配列でよく発生します。プログラムは正常に実行できますが、画面には常にこのプロンプトが表示されます。お知らせです。未定義のオフセット:......。php.iniファイルのerror_repotingパラメータを "EALL & Notice" に変更することで表示を抑制し、画面が正常に表示されるようにするのが一般的な方法です。



問題は解決したのですが、オフセットの後の数字が解らないのです。(例: Notice: Undefined offset: 4 ......) どういう意味でしょうか?また、文中の構文は明らかに正しいのに、なぜ警告が出るのでしょう。冷静に考えてみた結果 をオフセットします。次の数字は、間違っている配列の添え字です。通常は配列の範囲外であり、例えば配列$A[]の定義が10要素ある場合、$A[10]があればエラーになります(Notice: Undefined offset: 10 ...)配列の添え字は0から始まるので0~9までしかありません。 したがって、このような問題が発生した場合、あわてて表示を抑制する方法をとらずに(文章を追加する方が簡単です "error_reporting(オフセットを記入:次の数字);、必ず使用する配列の添え字に注意して、よく考えて、問題はすぐに解決しますよ!。また、配列の設定を解除してから、その内容を読み込もうとすることも可能で、phpのマニュアルにも記載されています。

確認ですが、UNSETを使用すると配列全体が破壊される可能性があります。この件に関しては、どこにも言及がなかったので、これを書くことにしました。



unsetと$myarray=array();を使ってunsetすることの違いは、明らかに配列は上書きされるだけで、まだ存在することです。



<?php



$myarray=array("Hello", "World");



echo $myarray[0]. $myarray[1]です。



unset($myarray)を使用します。



//$myarray=array()とする。



echo $myarray[0]. $myarray[1]です。



echo $myarray;



? >



unsetでの出力は。



<?



ハローワールド



お知らせ C:webpagesdainsidermyarray.php の 10 行目で未定義のオフセット: 0 です。



お知らせ C:webpagesdainsidermyarray.php の 10 行目で未定義のオフセット: 1 があります。



$myarray=array();での出力は。



? >



<?



ハローワールド



お知らせ C:webpagesdainsidermyarray.php の 10 行目で未定義のオフセット: 0 です。



お知らせ C:webpagesdainsidermyarray.php の 10 行目で未定義のオフセット: 1 があります。



アレイ



? >



元の投稿アドレス http://hi.baidu.com/putijie/item/04190dde206bd913e1f46fa9







実は、エラーを報告する行の前に@記号を追加すると、エラーがブロックされるのです。とても簡単です。