문제

아래는 내가 기대하는 방법이 작동하지 않는 것 같습니다. 이벤트 이벤트하지만 $ _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'] 이전에 설정된 경우.

이 질문에 가장 적합한 솔루션, 즉 '빈 문자열을 확인 해야하는 경우' 비어 있는().

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

비어 있는() 변수가 설정되어 있는지 여부를 확인할뿐만 아니라 빈 문자열, 빈 배열, 정수 0, 부울 false, ...

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']){
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top