函数变量判断实例,PHP判断变量是否已存在

2019-09-30 03:26栏目:网络时代
TAG:

 代码如下

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

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

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

<?php
$V => array(
  'aa' => 'www.qianyunlai.com',
  'bb' => array(
    'file' => 'file.qianyunlai.com',
    'img' => 'img.qianyunlai.com',
    'hosts' => array(
      'blog' => 'blog.qianyunlai.com',
      'res' => 'res.qianyunlai.com'
    )
  )
);

<?php
$var = 1;
if(isset($var)){
    echo '变量 $var 已经被设置';
} else {
    echo '变量 $var 还未被设置';
}
?>

// 'hello' 等于 NULL,所以被认为是未赋值的。
// 如果想检测 NULL 键值,可以试试下边的方法。
var_dump( array_key_exists('hello', $a) ); // TRUE

<?php
if(!filter_has_var(INPUT_GET, "name"))
 {
 echo("Input type does not exist");
 }
else
 {
 echo("Input type exists");
 }
?> 

实例对比

// 在后边的例子中,我们将使用 var_dump函数 输出 isset() 的返回值。

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

// 结果为 true,因为 $var 为空
if (empty($var)) { 
    echo '$var is either 0 or not set at all';
}

 代码如下

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

运行该例子输出:

返回值:

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

变量 $var 已经被设置

$a=’abc’;
echo $a['account'];

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

// 'hello' 等于 NULL,所以被认为是未赋值的。
// 如果想检测 NULL 键值,可以试试下边的方法。
var_dump( array_key_exists('hello', $a) ); // TRUE

 代码如下

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

 代码如下

var_dump(isset($V['V-Get']['wuliu']['yiwu']));
// $V['V-Get']['wuliu']['yiwu']='www.111cn.net'所以输出TRUE

// 判断$var存在,且字符串长度大于0
/* 菜鸟写法 
if (strlen($var) > 0) {
  echo '$var子符长度大于0';
}
*/

数组中的元素也同样有效:

var_dump(isset($V['WeiGeTi']));
// 数组$V 的$V['WeiGeTi'] ='www.111cn.net'已经存在,所以输出TRUE

函数检测用function_exists,注意待检测的函数名也需要使用引号,如:

除了当变量没有置值时不产生警告之外,empty() 是 (boolean) var 的反义词

趁这机会,整理了一下isset的用法,供大家借鉴

<?php
// $_POST['from'] 传递来的是一个网址,据此我们可以知道,这个值一定不为0和布尔,只能是字符串,或者空字符串,或者不存在

if(isset($is_var)) {
    echo "变量存在!<br />";
} else {
    echo "变量不存在!<br />";
}

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

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

$a = array ('test' => 1, 'hello' => NULL);

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

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

如果 变量 是非空或非零的值,则 empty() 返回 false

$foo = NULL;
var_dump( isset ($foo) ); // FALSE

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

var_dump( isset ($a['test') ); // TRUE
var_dump( isset ($a['foo') ); // FALSE
var_dump( isset ($a['hello') ); // FALSE

var_dump(isset($V['V-Get']['wuliu']['sh']));
//根据数组,根本就没有设定该项,所以输出FALSE
?>

// var_dump用于输出TRUE 或 FALSE

 代码如下

 代码如下

           if(isset($a)){

 

若变量不存在则返回 FALSE
若变量存在且其值为NULL,也返回 FALSE
若变量存在且值不为NULL,则返回 TURE
同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("")并不等同于 PHP 的 NULL 常数。

<?php
if (function_exists('test_func')) {
    echo "函数test_func存在";
} else {
    echo "函数test_func不存在";
}
?>
 
filter_has_var函数
filter_has_var() 函数检查是否存在指定输入类型的变量。
若成功,则返回 true,否则返回 false。

$is_var = '';

unset ($a);

if (isset($var2)) {
  echo '参数$var2已经设定,且值不为NULL';
}
// 这里是$var2虽然被设定了,但是$var2=NULL,所以isset($var2)返回FALSE,不会输出

?>

?>

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

 代码如下

 

4、PHP isset()判断$_POST、$_GET、$_REQUEST等值

if(empty($is_var)) {
    echo "变量为空!<br />";
} else {
    echo "变量不为空!<br />";
}

 代码如下

           if(empty($a)){

isset  — 检测变量是否设置
PHP isset() 用于检测一个或多个变量是否设置,如果被检测的变量存在则返回 TRUE,否则返回 FALSE。

$var = '';

PHP函数:empty() 和 isset() 都是判断变量是否已配置的函数,不过使用的时候还是存在一定的区别。

<?php
$var = 0;

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

<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 />
empty函数参数:

注意

var_dump(isset($V['V-Get']['e']));
//$V['V-Get']['e']='e.v-get.com' 所以输出 TRUE

          var $a=0;

<?php

<?php

isset()

 代码如下

<?php
$weigeti=''; //这里初始参数$weigeti='';
$weigeti0=FALSE //这里初始参数为布尔FALSE
$weigeti2=NULL;  //这里定义$weigeti2=NULL,用isset()判断返回FALSE
$weigeti3=""; // 这里是NULL字节,用isset()判断,返回TRUE,不同于NULL常数
$weigeti4="www.v-get.com";  //这里定义会在下面给unset掉

从上面两个函数的定义可以看出 empty() 和 isset() 的共同点是:都可以判定一个变量是否为空,都返回boolean类型,即true或false。而它们最明显区别的地方就是:返回的布尔值刚好是相反。

例子:

键 ‘b’ 的值等于 NULL,所以被认为是未置值的。
但是键’c'的值是空结果是true,空值是代表 有设置的 如果想检测 NULL 键值,可以试试下边的方法。

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

// 结果为 false,因为 $var 已设置
if (!isset($var)) {
    echo '$var is not set at all';
}
?>

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

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

empty  — 检查一个变量是否为空

<?php
$V=array(
'WeiGeTi'=>'www.111cn.net',
'V-Get'=>array(
    'www'=>'www.v-get.com',
    'e'=>'e.v-get.com',
    'wuliu'=>array(
        'www'=>'wuliu.v-get.com',
        'yiwu'=>'www.111cn.net'
     )
   )
);

           //empty($a)返回true

•isset() 只能用于检测变量,传递任何其它参数都将造成解析错误。
•isset() 是一个语言结构而非函数,因此它无法被变量函数调用。

PHP isset()判断$_POST、$_GET、$_REQUEST等值。用isset() 或者empty() 判断通过表单传递来的参数是isset() 最常见的用法。

          //isset($a)返回true

结果是a

1、isset()对PHP参数判断

var_dump( isset ($a) ); // FALSE
var_dump( isset ($a, $b) ); // FALSE

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

发现$account得到的是空,查了一些资料也没得到结果
做了一个实验得到了结论

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

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

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

$userInfo=’abc’;
if(isset($userInfo['account'])) {
$account=$userInfo['account'];
} else {
$account=$userInfo;
}

isset函数参数:

 代码如下

<?php

var_dump( array_key_exists(‘hello’, $a) ); // TRUE

结果表明: empty,isset输入参数必须是一个变量(PHP变量是以$字符开头的),而is_null输入参数只要是能够有返回值就可以(常量,变量,表达式等)。在PHP手册里面,对于他们解析是:empty,isset 是一个语言结构而非函数,因此它无法被变量函数调用。

使用isset()判断多个参数,需要所有参数都被设定,且不为NULL,只要其中有一个参数没有被设定过,或者为NULL,那么整个isset()就为FALSE。

var_dump(isset($V['bb']['hosts']['sh']));
//根据数组,根本就没有设定该项,所以输出FALSE
?>
3、PHP isset()对参数判断

if(isset($weigeti2)){ echo '参数$weigeti2已经设定,且值不为NULL'; }
// 这里是$weigeti2虽然被设定了,但是$weigeti2=NULL,所以isset($weigeti2)返回FALSE,不会输出

 

<?php
isset($v1)&&isset($v2)&&isset($v3)……
等价于
isset($v1,$v2,$v3……)
?>

二、概括总结isset,empty,is_null区别:

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

<?php
// 假设不存在$test 变量
 
$isset = isset($test) ? "test is define!" : "test is undefine!";
echo "isset:$isset", '<br />';

var_dump( isset ($a['test') ); // TRUE
var_dump( isset ($a['foo') ); // FALSE
var_dump( isset ($a['hello') ); // FALSE

}
?>
5、PHP isset($var{字符串长度}) 判断字符串长度

 代码如下

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

// var_dump用于输出TRUE 或 FALSE

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

if (isset($var)) {
print "This var is set set so I will print.";
}

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

格式:bool isset ( mixed var [, mixed var [, ...]] )

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

当是字符串key没有时,它会转化成数字key,是0,所以得到了a
现在php5.4已经修复

var_dump(isset($V['aa']));
// 数组$V 的$V['aa'] ='www.qianyunlai.com'已经存在,所以输出TRUE

isset函数是检测变量是否设置。

empty() 函数用来测试变量是否已经配置。若变量已存在、非空字符串或者非零,则返回 false 值;反之返回 true。

获取用户属性时有的用户能,有的用户不能,同样的逻辑为什么不能经检查使用了类似这样的代码

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

$a = "test";
$b = "anothertest";

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

//判断$weigeti存在,且字符串长度大于0
/* 菜鸟写法 
if(strlen($weigeti)>0){
echo '$weigeti子符长度大于0';}
*/

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

警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。

                 echo "判断结果不是空"

 代码如下

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

 

其他变量处理函数:
gettype:取得变量的类型。
intval:变量转成整数类型。
doubleval:变量转成倍浮点数类型。
empty:判断变量是否已配置。
is_array:判断变量类型是否为数组类型。
is_double:判断变量类型是否为倍浮点数类型。
is_float:判断变量类型是否为浮点数类型。
is_int:判断变量类型是否为整数类型。
is_integer:判断变量类型是否为长整数类型。
is_long:判断变量类型是否为长整数类型。
is_object:判断变量类型是否为类类型。
is_real:判断变量类型是否为实数类型。
is_string:判断变量类型是否为字符串类型。
isset:判断变量是否已配置。
settype:配置变量类型。
strval:将变量转成字符串类型。
unset:删除变量。

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

           }
 ?>

 代码如下

/* 下面写法比较常见,但是需要判断两次
if (isset($_POST['from']) && isset($_POST['from']{1})) {
  echo '$weigeti子符长度大于0';
}
*/

?>

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

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

empty() 判断一个变量是否为“空”,同时还会检测变量是否为空、为零。当一个变量值为0,empty() 认为这个变量同等于空,即相当于没有设置。而isset() 判断一个变量是否已经设置,就算变量值为空,为零也算已设置。

一些应用中实例

if (isset($var_name)) {
    //do something
}

这对于数组中的元素也同样有效:

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

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

empty()

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

那么!empty(),就是变量存在,且值不为""、0、"0"、NULL、FALSE、array()以及var $var;

if(isset($_POST['from'])&&'E.V-Get.com'==$_POST['from']){
echo '网站通过POST传递的来源是E.V-Get.com';
}

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

}
?>

<?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判断函数是否存在

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

一、举例说明

<?php

输出为. Input type exists

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

$empty = !empty($test) ? "test is define!" : "test is undefine!";
echo "empty:$empty", '<br />';
 
$is_null = is_null($test) ? "test is define!" : "test is undefine!";
echo "is_null:$is_null";
测试结果是:

根据上面我们可以用isset判断多参数,在对表单传递来的值进行判断就最方便了。

很多人都拿 PHP isset() 和 PHP empty()进行比较,不过得出的结论一般都是 PHP isset() 判断这个参数是否存在,且不为NULL,即使用 PHP isset() 判断空值、0、布尔值(TRUE/FALSE)都是TRUE,而且 PHP isset() 还可以对数组进行判断。

 代码如下

<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函数参数:

 代码如下

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

$a = array ('test' => 1, 'hello' => NULL);

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

var_dump( isset($a) ); // TRUE
var_dump( isset ($a, $b) ); // TRUE

 

if (isset($_POST['from']) && 'qianyunlai.com' == $_POST['from']) {
  echo '网站通过POST传递的来源是qianyunlai.com';
}
根据上面我们可以用isset判断多参数,在对表单传递来的值进行判断就最方便了。

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

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

<?php
$test=100;
echo is_null($test),is_null(100),is_null($b=100);
运行结果:没有任何错误。

is_null()

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

                 echo "判断结果是空"

           }

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

用isset() 或者empty() 判断通过表单传递来的参数是isset() 最常见的用法。

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

if (function_exists('fun_name')) {
 fun_name();
}  

版权声明:本文由澳门新葡亰平台游戏发布于网络时代,转载请注明出处:函数变量判断实例,PHP判断变量是否已存在