-2

, 그것을 통해 이동하십시오 :대입 연산자의 왼쪽에있는 변수에 항상 거짓 값을 할당하기 위해 대입 연산자와 함께 논리적 (!) 연산자를 사용합니까? 내가 코드를 다음 한

<?php 
    // Top of the page, before sending out ANY output to the page. 
     $user_is_first_timer = !isset($_COOKIE["FirstTimer"]); 

    // Set the cookie so that the message doesn't show again 
     setcookie("FirstTimer", 1, strtotime('+1 year')); 
?> 

<H1>hi!</h1><br> 


<!-- Put this anywhere on your page. --> 
<?php if($user_is_first_timer): ?> 
    Hello there! you're a first time user!. 
<?php endif; ?> 

을 내 코딩 경험에 의하면, 대부분의 시간에 나는 if!isset($_COOKIE["FirstTimer"]) 같은 문장을 본 적이있다. 제 생애 처음으로 대입 연산자를 사용하여 그러한 진술을 관찰하고 있습니다.

위 코드에서 문구 $user_is_first_timer = !isset($_COOKIE["FirstTimer"]);은 무엇을 이해하고 싶습니까?

이 코드 줄에서 논리 not (!) 연산자의 역할은 무엇입니까?

좋은 믿을만한 설명으로 제 의심을 분명히하십시오.

감사합니다.

+2

싱글! 그냥 bool 값을 뒤집는다. 'isset ($ _COOKIE [ "FirstTimer"])'가 true를 반환하면, 사용자는이 논리에서 처음으로 타이머가 아니라고 생각합니다. 그래서 $ user_is_first_timer에 할당 된 것은! + true (= false) ... – marekful

+0

'setcookie'의 두 번째 인수는 문자열이어야합니다. – Progrock

답변

2

예 :

는 isset (isset는 : 변수가 설정되어 있는지 확인하고 NULL 아니다)

$foo = '1'; 
$bar = ''; 
$baz = null; 

var_dump(isset($foo)); 
var_dump(isset($bar)); 
var_dump(isset($baz)); 
var_dump(isset($bat)); 

출력 :

bool(true) 
bool(true) 
bool(false) 
bool(false) 

NOT 연산자 :

var_dump(!true); 
var_dump(!false); 

출력 :

bool(false) 
bool(true) 
함께

:

$qux = 'something'; 
var_dump(!isset($qux)); 
var_dump(!isset($quux)); // Note quux isn't set. 

출력 :

bool(false) 
bool(true) 

쿠키 값이 (!의는 isset)를 설정되지 않은 경우 그래서 귀하의 예제에서, 당신은 그들이 이전에 사이트를 방문하지 않은 결론된다

.

할당시 $true = !false을 가질 수 있습니다. 여기서 $true은 거짓이 아니라 사실을 나타냅니다.

관련 문제