Это ниже, похоже, не работает, как бы я ожидал, событие, хотя $_GET ['friendid'] = 55, возвращает NULL
<?PHP
$_GET['friendid'] = 55;
$friendid = (!isset($_GET['friendid'])) ? $_GET['friendid'] : 'empty';
echo $friendid;
exit;
?>
Это ниже, похоже, не работает, как бы я ожидал, событие, хотя $_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+, если все, что вы проверяете, является "правдой, вы можете использовать" оператор Элвиса" (обратите внимание, что это не проверяет Исеть).
$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']
, если оно было ранее установлено.
Лучшее решение для этого вопроса, т.е. если вам также нужно "проверить пустую строку", empty().
$friendid = empty($_GET['friendid']) ? 'empty' : $_GET['friendid'];
empty() не только проверяет, установлена ли переменная, но и возвращает false, если она кормит все, что можно считать "пустым", например пустая строка, пустой массив, целое число 0, логическое значение false,...
От вашего ответа к Филиппу, я думаю, вам нужно взглянуть на различия между empty и isset.
Подводя итог isset(), вернет логическое значение TRUE, если переменная существует. Следовательно, если вы должны были сделать
$fid = $_GET['friendid'] = "";
$exists = isset($fid);
$exists будет TRUE, поскольку существует $_GET ['friendid']. Если это не то, что вы хотите, я предлагаю вам выглядеть пустым. Пусто возвращает TRUE на пустую строку (""), которая, кажется, является тем, что вы ожидаете. Если вы используете пустое, ПОЖАЛУЙСТА, обратитесь к документации, к которой я привязан, есть и другие случаи, когда empty возвращает true, если вы этого не ожидаете, эти случаи явно документированы по вышеуказанной ссылке.
НТН.
если параметр friendid NOT, friendid = friendid иначе friendid = empty
Хорошо, возможно, у меня была аналогичная проблема, не знакомая с! ситуация, когда ясондавис был.
Какой-то сбивающий с толку, но не узнающий! как в... 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 coalescing operator, если это условие
if($myArr['user'] ?? false){
Что эквивалентно
if(isset($myArr['user']) && $myArr['user']){