PHP判断变量是否已存在

2.isset()

isset() 函数用来测试变量是否已经配置。若变量已存在则返回 true 值。其它情形返回 false 值。

$a = null;
is_null($a);  

B、看下各自接收的参数是什么?

(3)区别null

很多时候我们需要对多个参数进行判断,可以使用isset($A)&&isset($B)……来判断这些参数是不是都已经设定了,而且都不为NULL,对此您可以使用isset()多参数来判断是不是都设定了。

您可能感兴趣的文章:

 

1.empty用法

补充:PHP 判断常量,变量和函数是否存在

另外在做表单提交的时候可能经常要检测一个变量是否存在,假如$_REQUEST['status']

0;使用empty($_REQUEST['status'])返回true,但是使用isset($_REQUEST['status']) 判断就不是空

3. is_null():

bool is_null ( mixed $var )   (php.net官方文档的函数定义)
当参数满足下面三种情况时,is_null()将返回TRUE,其它的情况就是FALSE
1、它被赋值为NULL
2、它还没有赋值
3、它未定义,相当于unset(),将一个变量unset()后,不就是没有定义吗
让我们来看一些例子:

$myvar = NULL;  
var_dump(is_null($myvar)); // TRUE 
$myvar1;      
var_dump(is_null($myvar1)); // TRUE Notice: Undefined variable 
$num = 520; 
unset($num); 
var_dump(is_null($num)); //TRUE Notice: Undefined variable 
var_dump(is_null($some_undefined_var)); //TRUE Notice: Undefined variable 

$myvar = 0; is_null($myvar);   // FALSE 
$myvar = FALSE; is_null($myvar); // FALSE 
$myvar = ''; is_null($myvar);  // FALSE 

<?php
// 三元,等同于 if (isset($_POST['from'])) { $var = $_POST['from'];} else {$weiget = '';}

bool empty ( mixed var)
如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE

                 echo "判断结果是空"

isset -- 检测变量是否设置

// var_dump用于输出TRUE 或 FALSE

$a = '';
empty($a) && $a=== ''

<?php

如何区别如下数组中 [0,'',null] 三个元素?(1)区别0:

<?php
// 表单传递来user用户名和 pass必须同时存在才能执行
if (isset($_POST['user'], $_POST['pass'])) {
  $user=$_POST['user'];
  $pass=$_POST['pass'];
  echo '您填写的用户名是:',$user,';密码是:',$pass;

描述
bool isset ( mixed var [, mixed var [, ...]])
如果 var 存在则返回 TRUE,否则返回 FALSE。
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("0")并不等同于 PHP 的 NULL 常数。

<?php
isset($v1)&&isset($v2)&&isset($v3)……
// 等价于
isset($v1,$v2,$v3……)
?>
使用isset()判断多个参数,需要所有参数都被设定,且不为NULL,只要其中有一个参数没有被设定过,或者为NULL,那么整个isset()就为FALSE。

(2)区别''

// 下面用!empty() 只需要判断一次,更加高效
if (!empty($_POST['from'])) {
  echo '传递的from存在且不为空、0等';
}
?>
虽然有时候用!empty()判断传递来的$_GET、$_POST 性能更优越,但是并不是能完全代替isset()使用,如果传递的值允许包含0、'0'或者空的时候,就不能使用!empty()判断了,否则即使传递过来了0、'0'都会被当作没有传递任何值过来。

注意:如果变量不存在,isset()和empty()都不会报错;is_null(),is_numeric()会报错

而 PHP empty(),若变量不存在,或者变量存在且其值为""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE。

$a = 0;
isset($a) && is_numeric($a) === true

if (defined('CONST_NAME')) {
    //do something
}

// 性能更优越的写法,判断$var第1个字符是否设定了
if (isset($var{1})) {
  echo '$var字符长度大于0';
}
?>
6、PHP isset() 与 PHP empty() 的区别

$var = isset($_POST['from']) ? $_POST['from'] : '';

用PHP判断字符串是否存在或者判断字符串长度是否超过某一数字或者判断字符串长度是否为空一般使用strlen(),但是其实使用isset()性能更优越。

一、举例说明

另外,他们之间最大的区别就是对于0的判断,若用empty判断会认为是空,用isset则认为不为空,举个例子:

如果 变量 存在且值非NULL,则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。

if (isset($vget)) {
  echo '参数$vget已经设定,且值不为NULL';
}
// 参数$vget根本就没有被提及过,isset($vget)返回FALSE,不会输出

而对于可以确定传递过来的值一定不为0、'0'、空的时候,如用户名、密码等,使用!empty() 性能更优越。

isset:test is undefine!
empty:test is undefine!
is_null:test is define!
结果表明: empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!

A.如何判断一个变量是否定义?

<br />
<b>Parse error</b>:  parse error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '$' in <b>PHPDocument3</b> on line <b>3</b><br />
is_null函数参数:

<?php
/* 判断常量是否存在*/
if (defined('MYCONSTANT')) {
echo MYCONSTANT;
}
//判断变量是否存在
if (isset($myvar)) {
echo "存在变量$myvar.";
}
//判断函数是否存在
if (function_exists('imap_open')) {
echo "存在函数imag_openn";
} else {
echo "函数imag_open不存在n";
}
?>
 
function_exists判断函数是否存在

if (isset($var3)) {
  echo '参数$var3已经设定,且值不为NULL';
}
// 参数$var3 虽然 就是代表NULL字节,但是这个不是常数NULL,所以$isset("")返回TRUE,会输出

          var $a=0;

var_dump(isset($V['bb']['file']));
//$V['bb']['file'] = 'file.qianyunlai.com' 所以输出 TRUE

           if(isset($a)){

empty()

<?php
$test=100;
echo empty($test),empty(100),empty($b=100);
输出:

if (isset($var)) {
  echo '参数$var已经设定,且值不为NULL';
}
// 参数$var已经赋值,而且值为$var='',所以会输出“参数$var已经设定”

                 echo "判断结果不是空"

if (isset($var0)) {
  echo '参数$var0已经设定,且值不为NULL';
}
// 参数$var0已经赋值,而且值为$var=FALSE,所以会输出“参数$var已经设定”

           if(empty($a)){

在使用PHP数组的时候,需要判断数组的某个值是否存在也可以使用 PHP isset() 函数。

unset($var4); // 这里给$var4 释放掉了
if (isset($var4)) {
  echo '参数$var4已经设定,且值不为NULL';
}
// 虽然开始已经定义$var4,而且还不为NULL,但是后来又给 unset() 掉了,所以不会输出。
?>
2、PHP isset() 对数组的判断

您可以使用 PHP isset() 来判断一个参数是否被定义,注意如果该参数为空,或者"n"(NULL字节)使用 PHP isset() 判断之后,都会为TRUE。

检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是 null ,它才返回TRUE . 其它都返回 FALSE 【未定义变量传入后会出错!】。

变量检测则是使用isset,注意变量未声明或声明时赋值为NULL,isset均返回FALSE,如:  

<?php
$var = ''; // 这里初始参数$var='';
$var0 = FALSE // 这里初始参数为布尔FALSE
$var2 = NULL;  // 这里定义$var2=NULL,用isset()判断返回FALSE
$var3 = ""; // 这里是NULL字节,用isset()判断,返回TRUE,不同于NULL常数
$var4 = "www.qianyunlai.com"; // 这里定义会在下面给unset掉

本文由美洲杯在哪买球发布于计算机教程,转载请注明出处:PHP判断变量是否已存在

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。