Я прочитал все другие статьи на in_array и до сих пор не понимаю, почему мои данные приводят к нечетным результатам. Я наследую этот код от кого-то еще и не понимаю, почему они сделали определенные вещи. Когда пользователь входит в систему, данные захватываются из db, причем одно из полей является их «уровнем». 1 - администратор, 2 - обычный пользователь и т. Д. Как только данные захватываются из db, мы помещаем пользовательский уровень (сохраненный как a: 1: {i: 0; s: 1: "2") в массив:php in_array, дающий нечетный результат
$user_level = unserialize($this->result['user_level']);
$_SESSION['unt']['user_level'] = $user_level;
Позже мы проверяем, является ли это администратором:
error_log(print_r($_SESSION['abc']['user_level'])); //this is always "1"
if (in_array('1', $_SESSION['abc']['user_level'])) { //should be yes, correct?
Но так или иначе, если заявление никогда не оценивает, как верно, даже если переменная SESSION равна 1. Что мне не хватает?
Вашего print_r должен быть правдой как второй параметр, если вы передаете результат, а не печатаете его, например error_log (print_r ($ _ SESSION ['abc'] ['user_level'], true)); – AsksAnyway