Как мне использовать или в PHP?

0
$key = $_REQUEST[ 'key' ] or $key = false;

В PHP, что я получу за ключ $? Что, если скрипт не получит параметр (ключ), выдаст ли он ошибку?

В общем, как я могу использовать или в PHP?

Этот код исходит от кого-то другого, и я его разрешаю, потому что он выдает ошибку 500, если никакой параметр не получен. В общем, я использую решение, предлагаемое @DaOgre. Но меня больше интересует ошибка, и какой будет правильный способ использования или в PHP.

  • 2
    Вы смотрели на документацию вообще ?? php.net/manual/en/language.operators.logical.php
  • 0
    У вас есть опыт работы с такими языками, как JavaScript или Ruby, в которых есть конъюнктивные операторы, такие как var = maybefalse || 'default' ? В настоящее время в PHP нет ничего более аккуратного, но это предлагается для PHP 7.
Показать ещё 4 комментария
Теги:

3 ответа

2
Лучший ответ

Как упоминалось в замечании Майкла Берковски выше правильного пути для достижения требуемой функциональности, вероятно, с помощью тройного оператора

<snip>
$key = isset($_REQUEST['key']) ? $_REQUEST['key'] : false;
<snip>

Это проверяет, установлен ли ключ, и если да, возвращает первое значение ($ _REQUEST ['key']), и если он не возвращает fase.

Теперь вы можете выполнять любые другие логические проверки, которые вы хотите использовать в $key. Имейте в виду, что вы действительно должны дезинфицировать любые входящие данные, которые вы получаете от a, с помощью $ _REQUEST.

  • 0
    Я согласен с этим, и я сделал то же самое, что вы рекомендуете здесь. На самом деле, я модифицирую чей-то код, и я видел это. Мне просто любопытно, что на самом деле делает этот код, и я думаю, что PHP выдаст ошибку, если не получен ни один параметр.
0

Эта конструкция использует тот факт, что 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().

-2

это не или в php, но это || пытаться:

 $key = $_REQUEST[ 'key' ] || $key = false;
  • 2
    PHP имеет как || и / or операторы, которые являются функционально подобными, но с другим приоритетом. php.net/manual/en/language.operators.logical.php
  • 0
    @MichaelBerkowski в SQL-запросе, я знаю, что вы можете использовать или, но также в этом процедурном сценарии?, Документация подтверждает, что это логический оператор
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню