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,比如说,123123,您的函数将返回TRUE,而实际上该 ID 不在列表中。您当前的实现strpos()也将匹配部分数字。

这是一个简单的解决方法,需要将 ID 用点包围。

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

是的,正如 Brock 所说,Strpos 不能与 int 一起使用,因此您必须转换 id。所以需要对您的代码进行一些更改。

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";
        }
    }
于 2009-06-24T18:13:38.907 回答