使用strpos检查数字是否在字符串上

时间:2014-03-14 21:43:49

标签: php

大家好,我对这种情况感到困惑

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正常

4 个答案:

答案 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";
}

我个人认为,如果你不打算一直把它固定到一个阵列,我就不会有任何好处。