Простой PHP isset test

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

<?PHP $_GET['friendid'] = 55; $friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty'; echo $friendid; exit; ?> 

Related of "Простой PHP isset test"

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

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

Начиная с версии 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+, если все, что вы проверяете, является « правдивым » значением, вы можете использовать «оператор Элвиса» (обратите внимание, что это не проверяет isset).

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

Если вы ленивы и рискованны, вы можете использовать оператор управления ошибками @ и короткую форму тернарного оператора .

 $friendid = @$_GET['friendid']?: 'empty'; 

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

 $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'] если оно было ранее установлено.

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

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

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

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

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

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

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

НТН.

если friendid НЕ установлен, friendid = friendid иначе friendid = empty

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

Какой-то смущает, но не узнает! как в … 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).

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

Я использую оператор Null-коалесцирующего оператора, если условие, подобное этому

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

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

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