逻辑非(!)运算符是否与赋值运算符一起使用以始终将假值分配给赋值运算符左侧的变量?

Is the logical not(!) operator used with an assignment operator to always assign false value to the variable on left side of the assignment operator?

我有以下代码片段,请仔细阅读:

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

在我的编码经验中,大多数时候我都看到过像 !isset( $_COOKIE["FirstTimer"] ) 这样的语句和 if 语句。我有生以来第一次用赋值运算符观察到这样的语句。

在上面的代码中我只想了解语句$user_is_first_timer = !isset( $_COOKIE["FirstTimer"] );的作用是什么?

逻辑非 (!) 运算符在此代码行中的作用是什么?

请用可靠的解释解开我的疑惑。

谢谢。

举个例子。

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)

不是运算符:

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)

因此在您的示例中,如果未设置 cookie 值 (!isset),您就可以断定他们之前没有访问过该网站。

通过赋值,您可以获得 $true = !false$true这里是真的,不是假的