我正在编写一个简单的函数,由于某种原因(可能是一个简单的函数)它不适合我,我想知道你们是否可以帮助我。
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语句永远不会打印出来。
$postID
是一个数字123123
。
$cookie
字符串通常类似于123123.23422.234234.2342342.234234
感谢您的帮助!
答案 0 :(得分:14)
Strpos不适用于int,因此您需要将ID转换为字符串。试试这个:
$ID = (string)$postID;
答案 1 :(得分:2)
请注意,如果您的Cookie字符串看起来像123123.23422.234234.2342342.234234
并且您正在寻找ID,例如1231
或23
,那么您的函数将返回TRUE
ID不在列表中。您当前的strpos()
实施也会匹配部分数字。
这是一个简单的解决方法,需要ID包围点。
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
答案 2 :(得分:-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";
}
}