2014-03-14 1 views
-1

Привет ребят Im путать с этой ситуациейПроверьте номер на строке, используя StrPos

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 локальный Запуск PHP 5.5 работает отлично

+2

Я думаю, что его becuz номер 13 находится на сессии, я прав? –

+2

Есть много способов исправить это, но вопрос в миллион долларов: почему '$ _SESSION [" varPermissions "]' строка, а не массив? – Jon

+0

В строке sesstion есть – Javad

ответ

0

находит 3, потому что есть 3 в 13.

$ex = explode('|', $_SESSION["varPermissions"]); 
if(in_array('3', $ex)) 
{ 
    echo "Found 3"; 
} 
0

Попробуйте искать точную фразу в StrI нг

$values = explode('|', $_SESSION['varPermissions']); 
if (in_array('3', $values)) { 
    echo 'Number 3 exists.'; 
} 
else { 
    echo 'There is no number 3'; 
} 
0

Попробуйте это: (в случае, когда $ _SESSION [ «varPermissions»] является строкой)

if (in_array('3', explode ('|',$_SESSION["varPermissions"]))) { 
    echo "THERE IS NOT NUMBER 3"; 
} else { 
    echo "THERE IS A NUMBER 3"; 
} 
0

Если устранить эту проблему в режиме обслуживания и хотите, чтобы сделать наименьшее количество изменения, просто искать разделители вместе с вашим значением:

if (strpos($_SESSION['varPermissions'], "|3|) === false) { 
    echo "Not found"; 
} 

правильное решение, однако, было бы сделать $_SESSION['varPermissions'] массив в первую очередь; это позволит вам просто написать

if (!in_array(3, $_SESSION['varPermissions'])) { 
    echo "Not found"; 
} 

Лично я не вижу никакой пользы для разделения строки в массив на месте, если вы не собираетесь, чтобы исправить все это путь к началу.

Смежные вопросы