$key = $_REQUEST[ 'key' ] or $key = false;
В PHP, что я получу за ключ $? Что, если скрипт не получит параметр (ключ), выдаст ли он ошибку?
В общем, как я могу использовать или в PHP?
Этот код исходит от кого-то другого, и я его разрешаю, потому что он выдает ошибку 500, если никакой параметр не получен. В общем, я использую решение, предлагаемое @DaOgre. Но меня больше интересует ошибка, и какой будет правильный способ использования или в PHP.
Как упоминалось в замечании Майкла Берковски выше правильного пути для достижения требуемой функциональности, вероятно, с помощью тройного оператора
<snip>
$key = isset($_REQUEST['key']) ? $_REQUEST['key'] : false;
<snip>
Это проверяет, установлен ли ключ, и если да, возвращает первое значение ($ _REQUEST ['key']), и если он не возвращает fase.
Теперь вы можете выполнять любые другие логические проверки, которые вы хотите использовать в $key
. Имейте в виду, что вы действительно должны дезинфицировать любые входящие данные, которые вы получаете от a, с помощью $ _REQUEST.
Эта конструкция использует тот факт, что or
оператор является короткозамкнутым, что означает, что правая часть оценивается только в том случае, если левая часть имеет значение true
. Следовательно, это эквивалентно:
if($_REQUEST['key']) {
$key = $_REQUEST['key'];
} else {
$key = false;
}
или, используя тернарный оператор:
$key = $_REQUEST['key'] ? $_REQUEST['key'] : false;
Это означает, что $key
будет установлен в false
если $_REQUEST['key']
не установлен или он вычисляет значение false
, а значение $_REQUEST['key']
противном случае.
Обратите внимание, однако, что в PHP есть множество вещей, которые оценивают значение false
, включая: false
, null
, integer 0
, float 0.0
, пустую строку, строку '0'
, массив с нулевыми элементами и пару других вещей, так что если вы пытаетесь проверить, установлен ли параметр $_REQUEST['key']
, вместо этого используйте функцию isset()
или, еще лучше, array_key_exists()
.
это не или в php, но это || пытаться:
$key = $_REQUEST[ 'key' ] || $key = false;
||
и / or
операторы, которые являются функционально подобными, но с другим приоритетом. php.net/manual/en/language.operators.logical.php
var = maybefalse || 'default'
? В настоящее время в PHP нет ничего более аккуратного, но это предлагается для PHP 7.