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

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

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

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

请用良好而可靠的解释消除我的疑虑。

谢谢你。

4

1 回答 1

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)

非运算符:

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这里将成立,而不是虚假。

于 2017-09-13T07:24:32.703 回答