奥门新浦京官方网站PHP判断变量是否已存在

本文介绍了PHP开荒中相遇的数组问题,这里介绍了推断PHP数组为空的5种方法,有须求的心上人能够借鉴参照他事他说加以侦察一下。

isset => is set? => 变量有未有被赋值(注解卡塔尔国

if (isset($_POST[‘from’]) && ‘qianyunlai.com’ == $_POST[‘from’])
{
  echo ‘网站通过POST传递的起点是qianyunlai.com’;
}
依据地点我们得以用isset决断多参数,在对表单传递来的值实行判别就最低价了。

3. var == null功用:判别变量是不是为”空”

证实:值为 0 或 false 或 空字符串”” 或 null的变量、空数组、都将决断为
null

瞩目:与empty的领悟差别正是:变量未起头化时 var == null 将会报错。

<?php
$a = 0;
$b = array();
if ($a == null) echo '$a 为空' . "";
if ($b == null) echo '$b 为空' . "";
if ($c == null) echo '$b 为空' . "";
// 显示结果为
// $a 为空
// $b 为空
// Undefined variable: c

在一千万次的简要质量评定语句循环中, 相比较结果如下:

除此以外,他们之间最大的界别正是对于0的决断,若用empty判断会以为是空,用isset则感觉不为空,举个例证:

1. isset功能:剖断变量是不是被开首化

表明:它并不会咬定变量是或不是为空,何况能够用来判别数组否月素是或不是被定义过

留意:当使用isset来决断数组元素是或不是被初叶化过时,它的功效比array_key_exists高4倍左右

<?php
$a = '';
$a['c'] = '';
if (!isset($a)) echo '$a 未被初始化' . "";
if (!isset($b)) echo '$b 未被初始化' . "";
if (isset($a['c'])) echo '$a 已经被初始化' . "";
// 显示结果为
// $b 未被初始化
// $a 已经被初始化

1、空值、0、false的赋值结果均被isset判为 TRUE
2、NULL将被isset判为 FALSE 
3、isset(卡塔尔(قطر‎相仿适用于数组成分和目的元素的检查。若数组或对象实例未被定义,则检查测量试验此中的数组成分/对象成分将被重回false。

<?php

2. empty功效:检查评定变量是还是不是为”空”

证实:任何二个未伊始化的变量、值为 0 或 false 或 空字符串”” 或
null的变量、空数组、未有任何性质的对象,都将剖断为empty==true

留意1:未发轫化的变量也能被empty检验为”空”

只顾2:empty只可以检测变量,而不可能检查实验语句

<?php
$a = 0;
$b = '';
$c = array();
if (empty($a)) echo '$a 为空' . "";
if (empty($b)) echo '$b 为空' . "";
if (empty($c)) echo '$c 为空' . "";
if (empty($d)) echo '$d 为空' . "";

is_null是函数, 所以它能够由此如下情势调用:

在动用PHP数组的时候,必要看清数组的某部值是或不是存在也得以使用 PHP isset(卡塔尔(قطر‎函数。

4. is_null作用:检查实验变量是不是为”null”

证实:当变量被赋值为”null”时,检测结果为true

在乎1:null不区分朗朗上口写:$a = null; $a = NULL 未有此外分化

专一2:仅在变量的值为”null”时,检查实验结果才为true,0、空字符串、false、空数组都检查测量检验为false

小心3:变量未领头化时,程序将会报错

<?php
$a = null;
$b = false;
if (is_null($a)) echo '$a 为NULL' . "";
if (is_null($b)) echo '$b 为NULL' . "";
if (is_null($c)) echo '$c 为NULL' . "";
// 显示结果为
// $a 为NULL
// Undefined variable: c

诶, 小编的提议是, 用函数做函数应该做的思想政治工作~, 听上去象废话?

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

5. var === null效能:检查测验变量是或不是为”null”,同有时间变量的品种也亟须是”null”

注明:当变量被赋值为”null”时,同偶然间变量的种类也是”null”时,检验结果为true

瞩目1:在认清为”null”上,全等于和is_null的遵从相像

在乎2:变量未初阶化时,程序将会报错

 代码如下

          var $a=0;

总结:

PHP中,”NULL” 和 “空” 是2个概念。

isset 首要用以判别变量是不是被初阶化过

empty 能够将值为 “假”、”空”、”0″、”NULL”、”未开首化” 的变量都认清为TRUE

is_null 仅把值为 “NULL” 的变量推断为TRUE

var == null 把值为 “假”、”空”、”0″、”NULL” 的变量都认清为TRUE

var === null 仅把值为 “NULL” 的变量判定为TRUE

介意:在认清三个变量是不是真正为”NULL”时,多数采取is_null,进而幸免”false”、”0″等值的苦闷。

<?php
$a=”laruence”:
isset($a);      //用时: 1.15s
is_null($a);    //用时: 3.88s
$a===NULL;     //用时: 1.22s
?>

var_dump(isset($V[‘bb’][‘hosts’][‘sh’]));
//遵照数组,根本就一向不设定该项,所以输出FALSE
?>
3、PHP isset(卡塔尔对参数决断

越来越多表明: 
应用 unset(State of Qatar 释放变量之后,它将不再是 isset(卡塔尔。 
isset(State of Qatar 只可以用来变量,传递任何其余参数都将促成深入深入分析错误。 
检查测验常量是不是已设置可接收 defined(卡塔尔 函数。

$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($v1)&&isset($v2)&&isset($v3)……
// 等价于
isset($v1,$v2,$v3……)
?>
利用isset(卡塔尔剖断五个参数,须要全数参数都被设定,且不为NULL,只要在那之中有三个参数未有被设定过,或许为NULL,那么整个isset(卡塔尔就为FALSE。

应用表明:

                 echo “判别结果不是空”

<?php
$var  = NULL;
$func = “is_null”;
$func($var);
?>

if (function_exists(‘fun_name’)) {
 fun_name();
}
 

is_null => is null? => 变量为NULL么?

洋洋时候大家要求对多少个参数实行判定,能够应用isset($A卡塔尔&&isset($B卡塔尔国……来判定那几个参数是否都早就设定了,而且都不为NULL,对此您能够运用isset(State of Qatar多参数来判别是否都设定了。

 代码如下

empty(State of Qatar判定一个变量是不是为“空”,同期还大概会检查实验变量是或不是为空、为零。当贰个变量值为0,empty(卡塔尔(قطر‎认为那些变量同等于空,即一定于还未有安装。而isset(卡塔尔国推断二个变量是或不是曾经设置,即使变量值为空,为零也算已安装。

 代码如下

用PHP判别字符串是还是不是留存也许决断字符串长度是不是超越某一数字大概推断字符串长度是或不是为空日常选取strlen(State of Qatar,可是其实使用isset(卡塔尔品质更杰出。

但有时候会发现在php中从不直达想要完结的指标。
具体原因小编就不斟酌了,php实际选用中平日都是用isset(卡塔尔国函数来做判别的。
示范如下:

 

if( isset($_GET[’name’]State of Qatar 卡塔尔(قطر‎//剖断传来的值是或不是为空。 

    echo “值为空”; 
}

<?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决断函数是还是不是存在

 代码如下

函数检查测量试验用function_exists,注意待检查测量试验的函数名也急需接受引号,如:

例子

// var_dump用于出口TRUE 或 FALSE

因为isset叫做isset, 所以它在检验未定义变量的时候, 不会发生NOTICE:

           }

 代码如下

/* 上面写法相比较普及,可是须要决断几遍
if (isset($_POST[‘from’]) && isset($_POST[‘from’]{1})) {
  echo ‘$weigeti子符长度超越0’;
}
*/

附:

1、isset(卡塔尔对PHP参数推断

<?php
//预订义变量数组:空字符,字符0,数组0,null,布尔false,空数组
$arr_var = array(”, ‘0’, 0, null, false, array());

 

那正是说, 对于哪一天用isset曾几何时用is_null, 小编有怎么样提议呢?

<?php
$var = ”; // 这里最先参数$var=”;
$var0 = FALSE // 这里开端参数为布尔FALSE
$var2 = NULL;  // 这里定义$var2=NULL,用isset(卡塔尔(قطر‎判别重临FALSE
$var3 = “”; //
这里是NULL字节,用isset()判断,返回TRUE,不同于NULL常数
$var4 = “www.qianyunlai.com”; // 这里定义会在下边给unset掉

传入值为:0
empty()==true
self==false

          //isset($a)返回true

而, isset因为是唇舌, 所以不可能如此调用.

           if(empty($a)){

foreach ($arr_var as $value)
{
    echo ‘<br>传入值为:’ . $value . ‘<br>’;
    if (!isset($value)) {
        echo ‘isset()==false<br>’;
    }
    if (empty($value)) {
        echo ’empty()==true<br>’;
    }
    if (!$value) {
        echo ‘self==false<br>’;
    }
    if (is_null($value)) {
        echo ‘is_null()==true<br>’;
    }
}
?>
出口结果:

PHP函数:empty(卡塔尔 和 isset(卡塔尔(قطر‎都以判定变量是不是已布置的函数,不过使用的时候如故存在必然的区分。

因为is_null是函数, 所以它能够担任函数重临值做为参数, 而isset不行(当然,
假如PHP想援助, 其实也是能够的, 只然而将要扩充编写翻译阶段的复杂度了卡塔尔国:

<?php
$test=100;
echo is_null($test),is_null(100),is_null($b=100);
运作结果:未有任何不当。

 代码如下

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

<?php
is_null(intval(“0x45”));
//OK
isset(intval(“0x45”));
//PHP Fatal error:  Can’t use function return value in write context
is_null(NULL);
//OK
isset(NULL);
//PHP Parse error:  syntax error
?>

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

<?php
isset($laruence);
//OK
is_null($laruence);
//PHP Notice:  Undefined variable: laruence
?>

unset($var4卡塔尔; // 这里给$var4 释放掉了
if (isset($var4)) {
  echo ‘参数$var4已经设定,且值不为NULL’;
}
// 即使伊始已经定义$var4,并且还不为NULL,然而后来又给 unset(卡塔尔(قطر‎掉了,所以不会输出。
?>
2、PHP isset(卡塔尔 对数组的决断

传入值为:0
empty()==true
self==false

那么!empty(卡塔尔国,正是变量存在,且值不为””、0、”0″、NULL、FALSE、array(卡塔尔国以至var
$var;

在一千万次的简约检查评定语句循环中, 比较结果如下:

                 echo “剖断结果是空”

传入值为:
empty()==true
self==false

// 判别$var存在,且字符串长度大于0
/* 生手写法 
if (strlen($var) > 0) {
  echo ‘$var子符长度超越0’;
}
*/

其余, 假若要用is_null, 小编建议使用 “=== NULL”
来代替, 它不仅语义和is_null一致, 结果一致, 速度还和isset差不离:

<?php
// 假若不设有$test 变量
 
$isset = isset($test) ? “test is define!” : “test is undefine!”;
echo “isset:$isset”, ‘<br />’;

传入值为:Array
empty()==true
self==false

           if(isset($a)){

 代码如下

A.怎么着决断多个变量是不是定义?

<?php
$a=”laruence”:
isset($a);   //用时: 1.15s
is_null($a); //用时: 3.89s
?>

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

传入值为:
isset()==false
empty()==true
self==false
is_null()==true

输出为. Input type exists

传入值为:
empty()==true
self==false

empty()

isset和is_null对比

if (isset($var2)) {
  echo ‘参数$var2已经设定,且值不为NULL’;
}
//
这里是$var2尽管被设定了,可是$var2=NULL,所以isset($var2卡塔尔(قطر‎再次来到FALSE,不会输出

PHP的isset()函数
格式:bool isset ( mixed var [, mixed var [, …]] ) 
效果:检查实验变量是或不是设置 
返回值: 
若变量子虚乌有则赶回 FALSE 
若变量存在且其值为NULL,也回到 FALSE 
若变量存在且值不为NULL,则赶回 TURE 
还要检查七个变量时,各类单项都合乎上一条要求时才重回 TRUE,不然结果为
FALSE 

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

小结一:从结果中能够看来,””、0、”0″、NULL、FALSE、array(卡塔尔这几当中,empty(卡塔尔和“变量自己作为参数”结果相似,均作为“空”来管理,而isset(卡塔尔国和is_null
(卡塔尔仅当是null时,才作为“空”来拍卖(值得注意的是false并不会被认为是空)

变量检验则是选择isset,注意变量未表明或评释时赋值为NULL,isset均再次来到FALSE,如:
 

版本:PHP 3, PHP 4, PHP 5 

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

因为isset是讲话, 所以它快!

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

empty(卡塔尔函数用来测验变量是还是不是早就安排。若变量已存在、非空字符串恐怕非零,则赶回
false 值;反之再次来到 true。

重重人都拿 PHP isset(State of Qatar 和 PHP empty(卡塔尔(قطر‎进行比较,可是得出的下结论平日都是PHP isset(卡塔尔国 决断那些参数是不是存在,且不为NULL,即接收 PHP isset(State of Qatar判别空值、0、布尔值(TRUE/FALSE)都以TRUE,何况 PHP isset(卡塔尔国还能对数组举行判别。

}
?>
5、PHP isset($var{字符串长度}State of Qatar 判别字符串长度

而对于可以分明传递过来的值一定不为0、’0’、空的时候,如客商名、密码等,使用!empty(卡塔尔质量更优良。

而 PHP
empty(State of Qatar,若变量不设有,可能变量存在且其值为””、0、”0″、NULL、FALSE、array(卡塔尔国、var
$var; 甚至从未任何性质的指标,则赶回 TURE。

<?php
// $_POST[‘from’]
传递来的是多少个网站,据此大家得以领悟,那一个值一定不为0和布尔,只好是字符串,或者空字符串,可能海市蜃楼

一、比如表明

用isset(卡塔尔 或许empty(卡塔尔 推断通过表单传递来的参数是isset(State of Qatar 最何足为奇的用法。

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

isset:test is undefine!
empty:test is undefine!
is_null:test is define!
结果评释:
empty,isset首先都会检查变量是或不是留存,然后对变量值实行检查测量检验。而is_null
只是平昔检查变量值,是不是为null,由此只要变量未定义就能够并发错误!

isset函数参数:

若是 变量 存在且值非NULL,则赶回 TRUE,不然再次来到FALSE(包罗未定义)。变量值设置为:null,重临也是false;unset三个变量后,变量被收回了。注意,isset对于NULL值变量,特殊管理。

isset()

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

抵补:PHP 剖断常量,变量和函数是不是存在

if (isset($vget)) {
  echo ‘参数$vget已经设定,且值不为NULL’;
}
// 参数$vget根本就从没有过被提起过,isset($vget卡塔尔再次来到FALSE,不会输出

$var = isset($_POST[‘from’]) ? $_POST[‘from’] : ”;

<?php
// 表单传递来user客户名和 pass必得同有的时候候存在能力进行
if (isset($_POST[‘user’], $_POST[‘pass’])) {
  $user=$_POST[‘user’];
  $pass=$_POST[‘pass’];
  echo ‘您填写的客商名是:’,$user,’;密码是:’,$pass;

只要 变量 是非空或非零的值,则 empty(卡塔尔(قطر‎ 返回FALSE。换句话说,””、0、”0″、NULL、FALSE、array(卡塔尔国、var
$var、未定义,以致未有其余性质的对象都将被以为是空的,假诺 var
为空,则赶回 TRUE。

isset(卡塔尔(قطر‎ 函数用来测量检验变量是不是早就计划。若变量已存在则赶回 true
值。别的情形再次回到 false 值。

<?php
if (function_exists(‘test_func’)) {
    echo “函数test_func存在”;
} else {
    echo “函数test_func不存在”;
}
?>
 
filter_has_var函数
filter_has_var(State of Qatar 函数检查是还是不是存在钦命输入类型的变量。
若成功,则赶回 true,不然再次来到 false。

           }
 ?>

其余变量管理函数:
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:删除变量。

B、看下各自选拔的参数是何等?

检测传入值【值,变量,表明式】是不是是null,唯有多个变量定义了,且它的值是
null ,它才回去TRUE . 其余都回来 FALSE 【未定义变量传入后会出错!】。

// 下面用!empty(卡塔尔 只要求判定一遍,特别快捷
if (!empty($_POST[‘from’])) {
  echo ‘传递的from存在且不为空、0等’;
}
?>
尽管临时用!empty(卡塔尔(قطر‎决断传递来的$_GET、$_POST
质量更卓越,不过并非能完全替代isset(State of Qatar使用,若是传递的值允许满含0、’0’只怕空的时候,就不可能应用!empty(卡塔尔决断了,不然就算传递过来了0、’0’都会被看做没有传递任何值过来。

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

if (isset($var3)) {
  echo ‘参数$var3已经设定,且值不为NULL’;
}
// 参数$var3 虽然
正是象征NULL字节,但是那些不是常数NULL,所以$isset(“”)返回TRUE,会输出

           //empty($a)返回true

从上边八个函数的概念能够看来 empty(卡塔尔 和 isset(卡塔尔的协同点是:都能够看清三个变量是不是为空,都回去boolean类型,即true或false。而它们最分明有别之处正是:重返的布尔值正好是倒转。

结果阐明:
empty,isset输入参数必需是八个变量(PHP变量是以$字符最初的),而is_null输入参数只借使力所能致有再次回到值就能够(常量,变量,表达式等)。在PHP手册里面,对于他们深入分析是:empty,isset
是二个语言构造而非函数,由此它不或许被变量函数调用。

<?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’
    )
  )
);

is_null()

// 质量更非凡的写法,判断$var第2个字符是不是设定了
if (isset($var{1})) {
  echo ‘$var字符长度超越0’;
}
?>
6、PHP isset() 与 PHP empty() 的区别

二、回顾总计isset,empty,is_null区别:

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

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

if (defined(‘CONST_NAME’)) {
    //do something
}

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

你可以选择 PHP isset(State of Qatar来判定二个参数是或不是被定义,注意假设该参数为空,只怕”n”(NULL字节)使用
PHP isset(卡塔尔 判别之后,都会为TRUE。

发表评论

电子邮件地址不会被公开。 必填项已用*标注