문제
아래는 내가 기대하는 방법이 작동하지 않는 것 같습니다. 이벤트 이벤트하지만 $ _get [ 'friendid'] = 55 반환 중입니다.
<?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+에서, 당신이 확인하는 모든 것이 ""라면 "진실"값,"Elvis Operator "를 사용할 수 있습니다 (ISSET을 확인하지 않음).
$var = $value ?: "default-value";
// which is synonymous to:
$var = $value ? $value : "default-value";
게으르고 위험하다면 사용할 수 있습니다 오류 제어 연산자 @ 그리고 짧은 형태의 3 배 운영자.
$friendid = @$_GET['friendid']?: 'empty';
현재 Ternary Operator와 함께 일하고 있습니다.
$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']
이전에 설정된 경우.
Philippe에 대한 귀하의 답변에서 나는 당신이의 차이점을 살펴볼 필요가 있다고 생각합니다. 비어 있는 그리고 ISSET.
요약하기 위해 isset()
변수가 존재하면 부울 진실을 반환합니다. 그러므로 당신이해야한다면
$fid = $_GET['friendid'] = "";
$exists = isset($fid);
$exists
사실이 될 것입니다 $_GET['friendid']
존재합니다. 이것이 당신이 원하는 것이 아니라면 나는 당신이 비어있는 것을 보는 것이 좋습니다. 빈 문자열 ( "")에서 비어있는 것은 당신이 기대하는 것 같습니다. 비어있는 경우 제발 내가 링크 한 문서를 참조하십시오. Empttion이 예상하지 못하는 경우 True를 반환하는 다른 경우가 있습니다. 이러한 경우는 위의 링크에 명시 적으로 문서화됩니다.
친구가 있다면 아니다 set, friendId = friendId 그렇지 않으면 friendId = 비어 있습니다
좋아, 나는 비슷한 문제를 가지고 있었을 것입니다. 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';
$ = "" "그런 다음 .... 작업한다면 혼란 스러웠습니다. (또는 PHP의 경우 $ a = ""인 경우).
나는이 문자열과 변수의 사용이 때때로 문자열로서 매우 어려운 일이라는 것을 알았습니다. 혼란을 통해서도 나는 실제로 왜 그런지 이해할 수 있습니다 ... 그냥 물건을 파악하기가 어렵습니다.
나는 사용 중입니다 NULL 합병 연산자 이와 같은 조건에서 운영자
if($myArr['user'] ?? false){
이는 동등합니다
if(isset($myArr['user']) && $myArr['user']){