Подтвердить что ты не робот

Простой PHP isset test

Это ниже, похоже, не работает, как бы я ожидал, событие, хотя $_GET ['friendid'] = 55, возвращает NULL

<?PHP

$_GET['friendid'] = 55;

$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

echo $friendid;
exit;

?>
4b9b3361

Ответ 1

Удалите !. Вы не хотите отрицать выражение.

$friendid = isset($_GET['friendid']) ? $_GET['friendid'] : 'empty';

Ответ 2

Начиная с версии PHP 7, вы можете использовать оператор null-coalescing (double "?" ) для этого:

$var = $array["key"] ?? "default-value";
// which is synonymous to:
$var = isset($array["key"]) ? $array["key"] : "default-value";

В PHP 5.3+, если все, что вы проверяете, является "правдой, вы можете использовать" оператор Элвиса" (обратите внимание, что это не проверяет Исеть).

$var = $value ?: "default-value";
// which is synonymous to:
$var = $value ? $value : "default-value";

Ответ 4

В настоящее время вы работаете с тернарным оператором:

$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

Разделите его на оператор if-else и он выглядит так:

if(!isset($_GET['friendid']))
   $friendid = $_GET['friendid'];
else
   $friendid = 'empty';

Посмотрите, что действительно происходит в инструкции if:

!isset($_GET['friendid'])

Обратите внимание на восклицательный знак (!) перед функцией isset. Это еще один способ сказать "противоположность". Что вы здесь делаете, это проверка того, что в $_GET['friendid'] уже нет значения. И если так, $friendid должен принять это значение.

Но на самом деле это сломается, так как $_GET['friendid'] даже не существует. И вы не можете принять значение чего-то, чего там нет.

Принимая это с самого начала, вы установили значение для $_GET['friendid'], так что первое условие if теперь является ложным и передает его на опцию else.

В этом случае установите для переменной $friendid значение empty.

Вы хотите удалить восклицательный знак, а затем значение $friendid примет значение $_GET['friendid'], если оно было ранее установлено.

Ответ 5

Лучшее решение для этого вопроса, т.е. если вам также нужно "проверить пустую строку", empty().

$friendid = empty($_GET['friendid']) ? 'empty' : $_GET['friendid'];

empty() не только проверяет, установлена ​​ли переменная, но и возвращает false, если она кормит все, что можно считать "пустым", например пустая строка, пустой массив, целое число 0, логическое значение false,...

Ответ 6

От вашего ответа к Филиппу, я думаю, вам нужно взглянуть на различия между empty и isset.

Подводя итог isset(), вернет логическое значение TRUE, если переменная существует. Следовательно, если вы должны были сделать

$fid = $_GET['friendid'] = "";
$exists = isset($fid);

$exists будет TRUE, поскольку существует $_GET ['friendid']. Если это не то, что вы хотите, я предлагаю вам выглядеть пустым. Пусто возвращает TRUE на пустую строку (""), которая, кажется, является тем, что вы ожидаете. Если вы используете пустое, ПОЖАЛУЙСТА, обратитесь к документации, к которой я привязан, есть и другие случаи, когда empty возвращает true, если вы этого не ожидаете, эти случаи явно документированы по вышеуказанной ссылке.

НТН.

Ответ 7

если параметр friendid NOT, friendid = friendid иначе friendid = empty

Ответ 8

Хорошо, возможно, у меня была аналогичная проблема, не знакомая с! ситуация, когда ясондавис был.

Какой-то сбивающий с толку, но не узнающий! как в... isset ($ avar) по сравнению с! isset ($ avar) может иметь значение.

Итак, с! на месте, больше заявляет ДА, как в

    since $_GET['friendid'] = 55; has been initialized...
                                tell me 'no' - the opposite - that it hasn't and set it to empty.
              $friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

    where not having the ! tells me yes it has something in it, leave it be.

               $friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';

Было гораздо меньше сбивать с толку, если A $= "тогда... работать. (или $A =" " для PHP).

Я считаю, что использование строк и переменных в качестве строк является очень сложным. Даже из-за путаницы я могу понять, почему... просто делает вещи, которые трудно понять для меня.

Ответ 9

Я использую оператор Null coalescing operator, если это условие

if($myArr['user'] ?? false){

Что эквивалентно

if(isset($myArr['user']) && $myArr['user']){