Check if a variable is undefined in PHP

考虑一下这个 JavaScript 语句:

isTouch = document.createTouch !== undefined

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

$isTouch != ""

在 PHP 中是否有类似于上面的内容?

336405 次浏览

你可以使用-

$isTouch = isset($variable);

如果定义了 $variable,它将返回 true。如果没有定义变量,它将返回 false

注意: 如果变量存在并且其值不为 NULL,则返回 TRUE,否则为 FALSE。

If you want to check for false, 0, etc., you can then use empty() -

$isTouch = empty($variable);

empty()为-工作

  • “” < em > (一个空字符串)
  • 0 < em > (0作为整数)
  • 0.0 < em > (0作为浮点数)
  • “0” < em > (0作为字符串)
  • NULL
  • FALSE
  • Array () < em > (空数组)
  • $var; < em > (声明的变量,但没有值)

To check if a variable is set you need to use the 是的 function.

$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 />';
}

This code will print:

isset true
isset false

阅读更多 < a href = “ https://php.net/Manual/en/function. isset.php”rel = “ nofollow norefrer”> isset

另一种方法很简单:

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


$test = "hello";


if($test){
echo "Yes 3";
}

将返回:

"Yes 3"

最好的方法是使用 isset () ,否则您可能会出现类似“ unDefinition $test”的错误。

你可以这样做:

if(isset($test) && ($test!==null))

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

undefined相比,JavaScript 的“严格不相等”操作符(!==)在 null值上导致 false

var createTouch = null;
isTouch = createTouch !== undefined  // true

要在 PHP 中实现等效的行为,可以检查 get_defined_vars()结果的键中是否存在变量名。

// just to simplify output format
const BR = '<br>' . PHP_EOL;


// set a global variable to test independence in local scope
$test = 1;


// test in local scope (what is working in global scope as well)
function test()
{
// is global variable found?
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.' ) . BR;
// $test does not exist.


// is local variable found?
$test = null;
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.' ) . BR;
// $test exists.


// try same non-null variable value as globally defined as well
$test = 1;
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.' ) . BR;
// $test exists.


// repeat test after variable is unset
unset($test);
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.') . BR;
// $test does not exist.
}


test();

在大多数情况下,isset($variable)是合适的。这相当于 array_key_exists('variable', get_defined_vars()) && null !== $variable。如果只使用 null !== $variable而没有预先检查是否存在,那么您将使用警告搞乱您的日志,因为这是试图读取未定义变量的 价值

但是,可以在不发出任何警告的情况下将未定义的变量应用于引用:

// write our own isset() function
function my_isset(&$var)
{
// here $var is defined
// and initialized to null if the given argument was not defined
return null !== $var;
}


// passing an undefined variable by reference does not log any warning
$is_set = my_isset($undefined_variable);   // $is_set is false

您可以使用 三元运算符三元运算符来检查该值是否由 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'] : '';

You can use the PHP () function to test whether a variable is set or not. The () will return FALSE if testing a variable that has been set to NULL. Example:

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

这段代码将输出“ This line is print,because the $var1 is set。”

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

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

看来你已经明确表示,你不寻找 isset()的问题。我不知道为什么有这么多的答案说 isset()是走的方式,或者为什么接受的答案说,以及。

重要的是要认识到在编程中空是某种东西。我不知道为什么决定如果值为 null isset()将返回 false。

要检查变量是否未定义,您必须使用 get_defined_vars()检查变量是否在已定义变量列表中。没有等价于 JavaScript 的未定义(这是问题中显示的,没有使用 jQuery)。

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

$isset = isset($variable);
var_dump($isset); // false

但是在本例中,它不会像 JavaScript 的未定义检查那样工作。

$variable = null;
$isset = isset($variable);
var_dump($isset); // false

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

那么如何实际检查变量是否已定义。

使用 get_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

但是,如果您发现在代码中必须检查是否定义了变量,那么您可能做错了什么。这是我个人对于为什么核心 PHP 开发人员在某些东西为 null 时离开 isset()而返回 false 的看法。

The 最简单的方法 to check if a variable or array index exists (is defined) and 不是无效的 and 不是空的 and 不是假的:

# 1

if($variable ?? false)
echo '$variable is defined';
else
echo '$variable is not defined';


// Result: $variable is not defined

# 2

$variable = null;


if($variable ?? false)
echo '$variable is not null';
else
echo '$variable is null';


// Result: $variable is null

# 3

$variable = false;


if($variable ?? false)
echo '$variable is not false';
else
echo '$variable is false';


// Result: $variable is false

# 4

$variable = '';


if($variable ?? false)
echo '$variable is not empty';
else
echo '$variable is empty';


// Result: $variable is empty