Это ниже, похоже, не работает, как я ожидаю, событие, хотя $ _GET ['friendid'] = 55 возвращает NULL
<?PHP $_GET['friendid'] = 55; $friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty'; echo $friendid; exit; ?>
Удалите !
, Вы не хотите отрицать выражение.
$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']){