session — php, если оператор с ИЛИ равен

Я пытаюсь написать, если стемент

if(($result["from_id"] OR $result["to_id"]) == $_SESSION['user_id']) {
//DO SOMETHING
}
else {
// redirect
}

Это правильный способ узнать, имеет ли какой-либо из 2 столбцов, извлеченных из определенной строки, одинаковое значение текущего зарегистрированного сеанса.

Это тоже возможно?

if($result["from_id"] || $result["to_id"] == $_SESSION['user_id']) {
//DO SOMETHING
}
else {
// redirect
}

0

Решение

Нет, в PHP вы должны сделать что-то вроде:

if ( in_array( $_SESSION['user_id'], array($result["from_id"], $result["to_id"]) ) )

или написать отдельные сравнения для каждого условия (2 в этом случае in_array метод масштабируется немного лучше).

Если результаты приходят из MySQL, вы можете использовать IN там прямо так же.

0

Другие решения

Ваше сравнение оценивается примерно так, при условии, что эти значения установлены …

if( (true || true) == $_SESSION['user_id']){ ... }

Вам нужно сравнить конкретно …

if( $result["from_id"] == $_SESSION['user_id']|| $result["to_id"] == $_SESSION['user_id']){ ... }

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

Но, как сказал jeroen, вы можете запустить это непосредственно в запросе.

SELECT * FROM `table` WHERE `from_id` = '$_SESSION['user_id']' OR `to_id` = '$_SESSION['user_id']'

за исключением, очевидно, избегать этого должным образом в зависимости от интерфейса базы данных, который вы используете

0

По вопросам рекламы [email protected]