2

我将 cookie 分配给变量:

$user_cookie = $_COOKIE["user"];

我如何检查是否$user_cookie收到了一些价值?

我应该使用if (empty($user_cookie))还是其他?

4

6 回答 6

5

这些是 empty 将返回 true 的东西:

  • ""(空字符串)
  • 0(0 为整数)
  • 0.0(0 为浮点数)
  • "0" (0 作为字符串)
  • 空值
  • 错误的
  • array() (一个空数组)
  • 变量$变量;(不在类中的声明变量)

直接取自php 手册

因此,要回答您的问题,是的,empty()这将是一个完全可以接受的功能,在这种情况下,我更喜欢它isset()

于 2011-06-22T06:32:51.833 回答
5

像这样使用isset()

if (isset($_COOKIE["user"])){
$user_cookie = $_COOKIE["user"];
}

这会告诉您一个名为的键user是否存在于$_COOKIE. 值本身可以是""0NULL。根据上下文,其中一些值(例如0)可能是有效的。

PS:对于第二部分,我会使用===运算符来检查false, NULL, 0, "", 或 may be (string) $user_cookie !== ""

于 2011-06-22T06:35:19.373 回答
2

如果您的 cookie 变量是一个数组

if (!isset($_COOKIE['user']) || empty(unserialize($_COOKIE['user']))) {
    // cookie variable is not set or empty
}

如果您的cookie变量不是数组:

if (!isset($_COOKIE['user']) || empty($_COOKIE['user'])) {
    // cookie variable is not set or empty
}

我使用这种方法。

于 2018-08-30T19:51:53.780 回答
1

在 php http://php.net/manual/en/function.empty.php中尝试空函数

您也可以使用 isset http://www.php.net/manual/en/function.isset.php

于 2011-06-22T06:30:30.827 回答
1

isset(),但是请记住,就像empty()它不能用于表达式,只能用于变量。

isset($_COOKIE['user']); // ok

isset($user_cookie = $_COOKIE['user']); // not ok

$user_cookie = $_COOKIE['user'];
isset($user_cookie); // ok

(在处理 cookieisset() 要走的路

于 2011-06-22T06:34:15.370 回答
0

您可以使用:

if (!empty($_COOKIE["user"])) {
   // code if not empty
}

但有时您想设置是否首先设置了值

if (!isset($_COOKIE["user"])) {
   // code if the value is not set
}
于 2011-06-22T06:33:08.473 回答