4

私は単純な関数を書いていますが、何らかの理由 (おそらく単純なもの) でうまくいきません。

function check_value($postID) 
    {
        $ID = $postID;
        $cookie = $_COOKIE['list_of_IDS'];
        $position = strpos($cookie,$ID);
        echo 'ID:'.$ID.'-Cookie:'.$cookie;
            if ($position !== false)
        {
            echo "ID is in the cookie";
        }
    }

問題の原因を突き止めようとして、変数に実際に何かが含まれていることを確認するために、If ステートメントの上にエコー行を配置しました。

私の問題は、IF ステートメントが出力されないことです。

A$postIDは数字123123です。

$cookie文字列は通常次のようなものです123123.23422.234234.2342342.234234

ご協力いただきありがとうございます!

4

3 に答える 3

15

Strpos は int では機能しないため、ID を文字列にキャストする必要があります。これを試して:

$ID = (string)$postID;
于 2009-06-24T17:23:59.057 に答える
2

cookie 文字列が のよう123123.23422.234234.2342342.234234に見え、ID を探している場合、たとえば、1231またはの場合、実際にはその ID がリストにないにもかかわらず、23関数が返されることに注意してください。TRUEの現在の実装は、strpos()部分数にも一致します。

ID をドットで囲む必要がある簡単な回避策を次に示します。

$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
于 2009-07-04T20:14:46.270 に答える