Skip to content

RiskyTruthyFalsyComparison

複数の型を持つ値を比較する際に、少なくとも1つの型が真偽値(truthy)または偽値(falsy)しか持たず、他の型が真偽値と偽値の両方を含む可能性がある場合に発生します。

<?php
/** 
 * @param array|null $arg 
 * @return void 
 */
function foo($arg) {
    if ($arg) {
        // これはリスクがあります。空の配列とnullのケースが一緒に処理されるからです
    }

    if (!$arg) {
        // これはリスクがあります。空の配列とnullのケースが一緒に処理されるからです
    }
}

なぜこれが問題なのか

変数の真偽値/偽値の型は、しばしば忘れられ、明示的に処理されないため、追跡が難しいエラーの原因となります。

修正方法

厳密な比較で変数を明示的に検証します。

ユーザーノート