論理エラー
論理エラー(またはロジックエラー)とは、プログラムのソースコードにある間違いによって、誤った動作や予期しない動作が発生することです。これは実行時エラーの一種で、単に間違った出力を生成する場合もあれば、実行中にプログラムがクラッシュする場合もあります。
さまざまな種類のプログラミング上の間違いによって、論理エラーが発生する可能性があります。たとえば、間違った変数に値を代入すると、予期しないプログラムエラーが次々に発生することがあります。2つの数値を足し合わせる代わりに掛け合わせても、望ましくない結果になる可能性があります。構文エラーを発生させない小さなタイプミスでさえ、論理エラーの原因になることがあります。次のPHPコード例では、1つの等号(=)ではなく2つの等号(==)を使うべきなので、if文によって論理エラーが発生する可能性があります。
誤り: if ($i=1) { ... }
正しい例: if ($i==1) { ... }
PHPでは、「==」は「等しい」を意味し、「=」は「なる」を意味します。そのため、間違ったif文は、変数$iに1を代入するとTRUE値が返されるため、常にTRUEを返します。正しいコードでは、$iが1と等しい場合にだけif文がTRUEを返します。ただし、間違ったコードの構文は正しいため、構文エラーは発生せず、コードは正常にコンパイルされます。論理エラーは実行時に初めて気付くことがあります。論理エラーはソースコード内に隠れていることが多いため、構文エラーよりも見つけにくく、デバッグも難しいのが一般的です。
知識をテストする