大家好,我对这种情况感到困惑
if(strpos($_SESSION["varPermissions"],'3') === false) {// was using == false now ===
echo "THERE IS NOT NUMBER 3"; } else { echo "THERE IS A NUMBER 3";}
我的会话返回| 0 | 2 | 12 | 10 | 8 | 7 | 13 | 14 | 15 | 27 | 20 | 25 | 26 | 21 | 29 |
因此数字3不在会话中,但我仍然得到数字3
例如,如果我正在寻找28我得到正确答案
这发生在运行php 5.4的在线服务器上xampp localhost运行php 5.5正常
答案 0 :(得分:0)
它找到3,因为13中有3个。
$ex = explode('|', $_SESSION["varPermissions"]);
if(in_array('3', $ex))
{
echo "Found 3";
}
答案 1 :(得分:0)
尝试此操作以在字符串中搜索确切的短语
$values = explode('|', $_SESSION['varPermissions']);
if (in_array('3', $values)) {
echo 'Number 3 exists.';
}
else {
echo 'There is no number 3';
}
答案 2 :(得分:0)
试试这个:(如果$ _SESSION [“varPermissions”]是一个字符串)
if (in_array('3', explode ('|',$_SESSION["varPermissions"]))) {
echo "THERE IS NOT NUMBER 3";
} else {
echo "THERE IS A NUMBER 3";
}
答案 3 :(得分:0)
如果您在维护模式下修复此问题并希望进行最少量的更改,只需搜索分隔符以及您的值:
if (strpos($_SESSION['varPermissions'], "|3|) === false) {
echo "Not found";
}
然而,正确的解决方案是首先使$_SESSION['varPermissions']
成为数组;这将允许您简单地写
if (!in_array(3, $_SESSION['varPermissions'])) {
echo "Not found";
}
我个人认为,如果你不打算一直把它固定到一个阵列,我就不会有任何好处。