PHP表达式_3_3_有关变量或常量状态的函数

时间:2019-11-06
本文章向大家介绍PHP表达式_3_3_有关变量或常量状态的函数,主要包括PHP表达式_3_3_有关变量或常量状态的函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

以下为学习孔祥盛主编的《PHP编程基础与实例教程》(第二版)所做的笔记。

1. 数据类型查看函数

  PHP为变量或常量提供了查看数据类型的函数,其中包括gettype()和var_dump()函数。

(1)gettype()函数

  语法格式:string gettype( mixed var )

  函数功能:gettype()函数需要变量名(带$符号)或常量名作为参数,该函数返回变量或常量的数据类型,这些数据类型包括:integer、double、string、array、object、unknown type(未知数据类型)等。

(2)var_dump()函数

  语法格式:void var_dump(mixed var)

  函数功能:var_dump()函数需要传递一个变量名(带$符号)或常量名作为参数,经常使用var_dump()函数查看变量或常量的值、数据类型等信息。

 1 <?php
 2 define("USERNAME","root");
 3 $score = 67.0;
 4 $age = 20;
 5 $words = array(2,4,6,8,10);
 6 echo gettype(USERNAME); //输出: string
 7 echo "<br/>";
 8 echo gettype($score);   //输出:double
 9 echo "<br/>";
10 echo gettype($age);     //输出:integer
11 echo "<br/>";
12 echo gettype($words);     //输出:array
13 echo "<br/>";
14 echo var_dump(USERNAME);    //输出:string(4) "root"
15 echo "<br/>";
16 echo var_dump($score);  //输出:float(67)
17 echo "<br/>";
18 echo var_dump($age);  //输出:int(20)
19 echo "<br/>";
20 echo var_dump($words);  //输出:array(5) { [0]=> int(2) [1]=> int(4) [2]=> int(6) [3]=> int(8) [4]=> int(10) } 
21 echo "<br/>";
22 ?>

输出:

string
double
integer
array
string(4) "root"
float(67)
int(20)
array(5) { [0]=> int(2) [1]=> int(4) [2]=> int(6) [3]=> int(8) [4]=> int(10) } 

2.检查常量或变量是否定义函数

(1)defined()函数

   语法格式:bool defined()函数定义。该函数参数为常量名(注意常量名必须带双引号或单引号),如果常量经过define()函数定义,该函数返回布尔值TRUE,否则返回FALSE。

1 <?php
2 define("USERNAME","root");
3 if(defined("USERNAME")){
4     echo "USERNAME常量经过了define()函数的定义";
5 }
6 echo "<br/>";
7 echo STUDENT;
8 ?>

输出:

USERNAME常量经过了define()函数的定义

Warning: Use of undefined constant STUDENT - assumed 'STUDENT' (this will throw an Error in a future version of PHP) in D:\phpStorm_Save\first\helloworld.php on line 7
STUDENT

说明:

  由于STUDENT常量未经define()函数定义,输出常量STUDENT的值时,先抛出Notice信息,然后将常量名作为常量的值输出。编程人员必须避免使用未经define()函数定义的常量。

(2)isset()函数

  语法格式:bool isset(mixed var)

  函数功能:检查变量var是否定义。该函数参数为变量名(带$号),如果变量已经定义,该函数返回布尔值TRUE,否则返回FALSE。

 1 <?php
 2 $age = 20;
 3 if(isset($age)){
 4     echo '变量$age已经定义<br/>';
 5 }else{
 6     echo '变量$age没有定义<br/>';
 7 }
 8 if(isset($name)){
 9     echo '变量$name已经定义<br/>';
10 }else{
11     echo '变量$name没有定义<br/>';
12 }
13 ?>

输出:

变量$age已经定义
变量$name没有定义

注意单引号与双引号的区别:

  echo语句输出的字符串必须使用一对单引号( ‘ )指定。如果将上面的程序的单引号全都替换成双引号,执行结果将会如下

Notice: Undefined variable: age已经定义 in D:\phpStorm_Save\first\helloworld.php on line 4
变量

Notice: Undefined variable: name没有定义 in D:\phpStorm_Save\first\helloworld.php on line 11
变量

说明:

  从执行结果来看:PHP预处理器会把 “$age已经定义” 以及 " $name已经定义 "作为变量名进行解析(PHP支持中文简体变量名,但不建议使用中文简体变量名)。

3.取消变量定义unset()函数

  unset()函数语法格式:void unset(mixed var)

  函数功能:取消变量var的定义。该函数的参数为变量名(带$符号),函数没有返回值。

 1 <?php
 2 $age1 = 18;
 3 $age2 = &$age1;
 4 $age2 = 20;
 5 echo $age1;
 6 echo "<br/>";
 7 //取消 $age1 的定义
 8 unset($age1);
 9 //由于 $age1 没有定义,该语句将输出notice信息
10 echo $age1;
11 echo "<br/>";
12 echo $age2;
13 ?>

输出:

20

Notice: Undefined variable: age1 in D:\phpStorm_Save\first\helloworld.php on line 8

20

说明:

  使用unset()函数,只是断开了变量名与变量的值之间的联系,没有立即销毁变量$age1, 变量 $age1由PHP垃圾回收机制在 “适当” 时刻进行回收。

4.检查变量是否为 “空”

   PHP提供了检查变量是否为“空”的两个函数: is_null()函数和empty()函数。

(1)is_null() 函数

  语法格式:boolean is_null(mixed var)

  函数功能:检查变量var是否为NULL,如果值为NULL则返回TRUE,否则返回FALSE。

  函数说明:is_null() 函数用于判断变量是否为NULL时,可以看作isset()函数的反函数。下面3种情况变量的值为NULL。

  (1)变量未经定义。

  (2)变量的值赋值为NULL。

  (3)变量经unset()函数处理后。

 1 <?php
 2 var_dump(is_null($a));
 3 echo "<br/>";
 4 
 5 $b = null;
 6 var_dump(is_null($b));
 7 echo"<br/>";
 8 
 9 $c = FALSE;
10 var_dump(is_null($c));
11 echo "<br/>";
12 
13 unset($c);
14 var_dump(is_null($c));
15 ?>

输出:

Notice: Undefined variable: a in D:\phpStorm_Save\first\helloworld.php on line 2
bool(true)
bool(true)
bool(false)

Notice: Undefined variable: c in D:\phpStorm_Save\first\helloworld.php on line 14
bool(true) 

说明:

  $a 与 $b 虽然都为NULL,但由于 $a 未经定义,因此 is_null($a)会抛出Notice信息。$b的值定义为NULL,is_NULL($b)不会抛出Notice信息。

(2)empty()函数

  语法格式:boolean empty(mixed var)

  函数功能:用于检查变量var是否为“ 空 ” ,该函数参数var为变量名( 带$号 )。如果变量var为空,则empty()函数返回TRUE,否则返回FALSE。

  注意:使用empty()函数时,变量为 "空" 的意义为:若变量var的值为空字符串" "、整数0、字符串零“0”、浮点数0.0、NULL、变量未被定义、FALSE或空数组array(),都将视为 “ 空 ”。empty()函数只用于检测变量是否为空,传递其他参数都将造成程序解析错误。 

 1 <?php
 2 class Student{
 3 }
 4 $a = 0;
 5 $b = "0";
 6 $c1 = "";
 7 $c2 = " ";      //说明:空格字符串“ ”不是“空”
 8 $d = NULL;
 9 $e = FALSE;
10 $f = array();
11 $g = new Student();
12 $h = 0.0;
13 var_dump(empty($a));    //输出: bool(true)
14 echo "<br/>";
15 var_dump(empty($b));   //输出: bool(true)
16 echo "<br/>";
17 var_dump(empty($c1));   //输出: bool(true)
18 echo "<br/>";
19 var_dump(empty($c2));   //输出: bool(false)
20 echo "<br/>";
21 var_dump(empty($d));   //输出: bool(true)
22 echo "<br/>";
23 var_dump(empty($e));   //输出: bool(true)
24 echo "<br/>";
25 var_dump(empty($f));   //输出: bool(true)
26 echo "<br/>";
27 var_dump(empty($f));   //输出: bool(true)
28 echo "<br/>";
29 var_dump(empty($g));   //输出: bool(false)
30 echo "<br/>";
31 var_dump(empty($h));   //输出: bool(true)
32 echo "<br/>";
33 ?>

输出:

bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true) 

说明:

(1)空字符串 “” 为空,空格字符串 “ ” 不是 “ 空 ”。

(2)“一个变量的值为NULL” 与 “一个变量未被定义”是两个不同的概念。

(3)对于一个未经定义的变量$a, isset($a)的结果是FALSE,且不会抛出Notice信息。is_null($a)与empty($a)的结果虽然都是TRUE,但is_null($a)将抛出Notice信息。

1 <?php
2 var_dump(is_null($a));  //抛出$a变量未定义Notice信息,然后输出:true
3 echo "<br/>";
4 var_dump(empty($a)); //直接输出:true
5 echo "<br/>";
6 var_dump(isset($a));  //直接输出: false
7 ?>

输出:

Notice: Undefined variable: a in D:\phpStorm_Save\first\helloworld.php on line 2
bool(true)
bool(true)
bool(false) 

5.数据类型检查函数

  PHP为变量或常量提供了检查数据类型的函数,这些函数的共同特征是:需要向这些函数传递一个变量名(带$符号)或常量名(注意常量名必须带双引号或单引号)作为参数,如果检查复合要求,函数返回TRUE,否则返回FALSE。

数据类型检查函数

函数名 功能 语法格式
is_bool 检测变量或常量是否是布尔型 bool is_bool(mixed var)
is_string 检测变量或常量是否是字符串 bool is_string(mixed var)

is_int

is_integer

is_float

检测变量或常量是否是整数 bool is_int(mixed var)

is_double

is_float

is_real

检测变量或常量是否是浮点型 bool is_float(mixed var)
is_numeric 检测变量或常量是否为数字或数字字符串 bool is_numeric(mixed var)
is_scaler 检测变量或常量是否是标量数据类型 bool is_scaler(mixed var)
is_array 检测变量是否是数组 bool is_array(mixed var)
is_object 检测变量是否是一个对象 bool is_object(mixed var)
is_resource 检测变量是否为资源对象 bool is_resource(mixed var)
 1 <?php
 2 class Student{
 3 }
 4 $bool = TRUE;
 5 $string = "你好";
 6 $int = 100;
 7 $float = 100.00;
 8 $numeric = "01234.56789";
 9 $array = array(1,3,5);
10 $object = new Student();
11 var_dump(is_bool($bool));       //输出: bool(true)
12 echo "<br/>";
13 var_dump(is_string($string));   //输出: bool(true)
14 echo "<br/>";
15 var_dump(is_int($int));         //输出: bool(true)
16 echo "<br/>";
17 var_dump(is_float($float));     //输出: bool(true)
18 echo "<br/>";
19 var_dump(is_numeric($numeric)); //输出:bool(true)
20 echo "<br/>";
21 var_dump(is_array($array));     //输出:bool(true)
22 echo "<br/>";
23 var_dump(is_object($object));    //输出:bool(true)
24 echo "<br/>";
25 ?>

输出:

bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true) 

  

原文地址:https://www.cnblogs.com/xiaoxuStudy/p/11604012.html