题
我正在写一个简单的功能,由于某种原因(可能是一个简单的一个),它不是为我工作,我在想,如果你们能帮助我。
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语句根本不会被打印出来。
一个$postID
是一个数字123123
。
在$cookie
字符串通常是这样123123.23422.234234.2342342.234234
感谢您的帮助!
解决方案
Strpos不会与一个int,所以你需要将ID转换为字符串。尝试这样:
$ID = (string)$postID;
其他提示
请注意,如果你的cookie字符串看起来像123123.23422.234234.2342342.234234
和你正在寻找一个ID,比如,1231
或23
,你的函数会,而实际上该ID不在列表返回TRUE
。您的当前实现strpos()
的也将匹配部分的数字。
下面是要由点包围一个简单的解决方法,这将需要的ID。
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
是为布洛克说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";
}
}
不隶属于 StackOverflow