PHP - 检查变量是否未定义

Tim*_*zee 70 php

考虑一下这个jquery语句

isTouch = document.createTouch !== undefined
Run Code Online (Sandbox Code Playgroud)

我想知道我们是否在PHP中有一个类似的语句,不是isset(),而是字面上检查一个未定义的值,如:

$isTouch != ""

在PHP中有类似的东西吗?

Sou*_*ose 126

您可以使用 -

$isTouch = isset($variable);
Run Code Online (Sandbox Code Playgroud)

true如果$variable定义了else ,它将存储false.如果需要反转,只需删除即可!.

注意:如果var存在且值不是NULL,则返回TRUE,否则返回FALSE.

或者,如果你想检查false,0等等也然后使用empty()-

$isTouch = empty($variable);
Run Code Online (Sandbox Code Playgroud)

empty() 效劳于 -

  • "" (空字符串)
  • 0 (0为整数)
  • 0.0 (0作为浮点数)
  • "0" (0作为字符串)
  • 空值
  • array() (一个空数组)
  • 是$ var; (声明的变量,但没有值)

  • 我认为 !isset(...) 不会检查值是否未定义。它检查它是否未定义或为空。我认为重要的是要注意事物可以定义为空。 (3认同)
  • `isset()` 总是返回布尔值。 (2认同)
  • 不。它返回“true”或“false”。所以不需要那个铸造。 (2认同)

TiD*_*iDJ 16

另一种方式是:

if($test){
    echo "Yes 1";
}
if(!is_null($test)){
    echo "Yes 2";
}

$test = "hello";

if($test){
    echo "Yes 3";
}
Run Code Online (Sandbox Code Playgroud)

将返回 :

"Yes 3"
Run Code Online (Sandbox Code Playgroud)

最好的方法是使用isset(),否则你可能会遇到类似"undefined $ test"的错误.

你可以这样做:

if( isset($test) && ($test!==null) )
Run Code Online (Sandbox Code Playgroud)

您不会有任何错误,因为不接受第一个条件.


Ale*_*ana 7

isset()函数不检查是否定义了变量。

您似乎已经明确表示您不是isset()在问题中寻找。我不知道为什么有这么多答案说明这isset()是要走的路,或者为什么接受的答案也说明了这一点。

在编程中意识到 null 是很重要的。我不知道为什么决定isset()如果值为 null 则返回 false。

要检查变量是否未定义,您必须使用get_defined_vars(). 没有等同于 JavaScript 的 undefined (这是问题中显示的内容,那里没有使用 jQuery)。

在下面的示例中,它的工作方式与 JavaScript 的未定义检查相同。

$isset = isset($variable);
var_dump($isset); // false
Run Code Online (Sandbox Code Playgroud)

但是在这个例子中,它不会像 JavaScript 的 undefined 检查那样工作。

$variable = null;
$isset = isset($variable);
var_dump($isset); // false
Run Code Online (Sandbox Code Playgroud)

$variable被定义为空,但isset()调用仍然失败。

那么你如何实际检查一个变量是否被定义?您检查定义的变量。

Usingget_defined_vars()将返回一个关联数组,键作为变量名,值作为变量值。我们isset(get_defined_vars()['variable'])这里仍然不能使用,因为键可能存在并且值仍然为空,所以我们必须使用array_key_exists('variable', get_defined_vars()).

$variable = null;
$isset = array_key_exists('variable', get_defined_vars());
var_dump($isset); // true


$isset = array_key_exists('otherVariable', get_defined_vars());
var_dump($isset); // false
Run Code Online (Sandbox Code Playgroud)

但是,如果您发现在您的代码中必须检查变量是否已定义,那么您可能做错了什么。这是我个人的信念,即为什么核心 PHP 开发人员isset()在某些内容为 null 时会返回 false。

  • 这,才是正确答案!至于检查变量是否已定义,在处理到处都有全局变量的 shi\*y 代码时,它有时很有用。为什么 PHP 人员决定让 *isset()* 返回 *false*(如果变量 *is* 已定义)并且包含 *null*...这是地球上的另一个谜团! (2认同)

Era*_*ira 6

要检查是否设置了变量,您需要使用isset函数.

$lorem = 'potato';

if(isset($lorem)){
    echo 'isset true' . '<br />';
}else{
    echo 'isset false' . '<br />';
}

if(isset($ipsum)){
    echo 'isset true' . '<br />';
}else{
    echo 'isset false' . '<br />';
}
Run Code Online (Sandbox Code Playgroud)

此代码将打印:

isset true
isset false
Run Code Online (Sandbox Code Playgroud)

https://php.net/manual/en/function.isset.php中阅读更多内容


小智 6

您可以使用 -

三元运算符检查 POST/GET 设置的值是否是这样的

$value1 = $_POST['value1'] = isset($_POST['value1']) ? $_POST['value1'] : '';
$value2 = $_POST['value2'] = isset($_POST['value2']) ? $_POST['value2'] : '';
$value3 = $_POST['value3'] = isset($_POST['value3']) ? $_POST['value3'] : '';
$value4 = $_POST['value4'] = isset($_POST['value4']) ? $_POST['value4'] : '';
Run Code Online (Sandbox Code Playgroud)


tho*_*mas 5

您可以使用 PHP isset()函数来测试变量是否已设置。如果测试已设置为 NULL 的变量,isset() 将返回FALSE 例子:

<?php
    $var1 = '';
    if(isset($var1)){
        echo 'This line is printed, because the $var1 is set.';
    }
?>
Run Code Online (Sandbox Code Playgroud)

此代码将输出“此行已打印,因为 $var1 已设置。”

阅读更多内容https://stackhowto.com/how-to-check-if-a-variable-is-undefined-in-php/