-2

J'ai suivant extrait de code, s'il vous plaît passer par là:L'opérateur logique not (!) Est-il utilisé avec un opérateur d'affectation pour toujours affecter une valeur false à la variable du côté gauche de l'opérateur d'affectation?

<?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; ?> 

Dans mon expérience de codage, la plupart du temps, je l'ai vu des déclarations comme !isset($_COOKIE["FirstTimer"]) avec la déclaration if. Pour la première fois de ma vie, j'observe une telle déclaration avec l'opérateur d'affectation.

Dans le code ci-dessus je veux seulement comprendre ce que fait l'instruction $user_is_first_timer = !isset($_COOKIE["FirstTimer"]);?

Quel est le rôle de l'opérateur logique not (!) Dans cette ligne de code?

S'il vous plaît effacer mes doutes avec une explication bonne et fiable.

Merci.

+2

Le célibataire! retourne simplement une valeur booléenne. Si 'isset ($ _COOKIE [" FirstTimer "])' renvoie vrai, alors l'utilisateur n'est PAS le premier temporisateur dans cette logique je suppose. Donc ce qui est assigné à $ user_is_first_timer est! + true (= false) ... – marekful

+0

Notez que le second argument de 'setcookie' devrait être une chaîne. – Progrock

Répondre

2

Par exemple.

Isset (isset: Déterminer si une variable est définie et est NULL):

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

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

Sortie:

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

Non opérateur:

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

Sortie:

bool(false) 
bool(true) 

Ensemble:

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

Sortie:

bool(false) 
bool(true) 

Donc, dans votre exemple, si la valeur du cookie n'est pas réglé (isset!), Vous concluez ils n'ont pas visité le site.

Avec affectation vous pouvez avoir $true = !false. $true tiendra ici vrai, pas faux.