当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

3.3.1数据类型查看函数

9/17/2020 9:37:07 PM 人评论

3.3.1数据类型查看函数

3.3 有关变量或常量状态的函数

PHP数据在内存中要么以变量的方式存储,要么以常量的方式存储,PHP提供了用于判断和修改变量或常量状态的函数。

3.3.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()函数需要传递一个变量名(带$符号)或常量名作为参数,该函数可以得到变量或常量的数据类型以及对应的值,并将这些信息输出。

函数说明:void表示函数var_dump()函数没有返回值。调试程序时,经常使用var_dump()函数查看变量或常量的值、数据类型等信息。例如,程序dataType.php如下。

<?php

define("USERNAME","root");

$score = 67.0;

$age = 20;

$words = array(2,4,6,8,10);

echo gettype(USERNAME);  //输出:string

echo "<br/>";

echo gettype($score);  //输出:double

echo "<br/>";

echo gettype($age);   //输出:integer

echo "<br/>";

echo gettype($words);  //输出:array

echo "<br/>";

var_dump(USERNAME);   //输出:string(4) "root"

echo "<br/>";

var_dump($score);    //输出:float(67)

echo "<br/>";

var_dump($age);    //输出:int(20)

echo "<br/>";

var_dump($words);/*输出:array(5) { [0]=> int(2) [1]=> int(4) [2]=> int(6) [3]=> int(8) [4]=>int(10) } */

?>

figure_0046_0070在调用函数时,函数名大小写不敏感,例如程序 dataType.php 中的 gettype()函数名也可以写成getType()。

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

1.defined()函数

语法格式:bool defined (string name)

函数功能:检查常量是否经过define()函数定义。该函数参数为常量名(注意常量名必须带双引号或单引号),如果常量经过define()函数定义,该函数返回布尔值TRUE,否则返回FALSE。例如,程序defined.php如下,该程序的运行结果如图3-7所示。从运行结果可以看出,常量(如STUDENT)若没有经define()函数定义,常量的值为常量名字符串。

<?php

define("USERNAME","root");

if(defined("USERNAME")){

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

}

echo "<br/>";

echo STUDENT;

?>

2.isset()函数

语法格式:bool isset (mixed var)

函数功能:检查变量var是否定义。该函数参数为变量名(带$号),如果变量已经定义,该函数返回布尔值TRUE,否则返回FALSE。例如,程序isset.php如下,该程序的运行结果如图3-8所示。

<?php

$age = 20;

if(isset($age)){

echo '变量$age已经定义';

}

?>

figure_0047_0071
图3-7 define函数的示例程序运行结果
figure_0047_0072
图3-8 isset函数的示例程序运行结果

figure_0047_0073isset()函数只能用于判断变量是否定义,传递其他参数都将造成程序解析错误,程序解析错误一旦发生,程序立即终止脚本的执行。defined()函数只能用于判断常量是否定义,传递其他参数defined()函数的返回结果永远为FALSE。

3.3.3 取消变量定义unset()函数

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

函数功能:取消变量 var 的定义。该函数的参数为变量名(带$符号),函数没有返回值。例如程序unset.php如下,该程序的运行结果如图3-9所示,程序运行过程中的内存分配图如图3-10所示。

figure_0047_0074
图3-9 unset函数的示例程序运行结果

<?php

$age1 = 18;

$age2 = &$age1;

$age2 = 20;

echo $age1;

echo "<br/>";

unset($age1); //该语句取消变量$age1的定义

echo $age1; //由于$age1没有定义,该语句将输出notice信息

echo "<br/>";

echo $age2;

?>

figure_0048_0075
图3-10 变量在内存中的动态分配

对图 3-10 的部分说明:当程序执行到语句“unset($age1);”时,称为过程 4。使用 unset()函数,只是断开了变量名和变量的值之间的联系,没有立即销毁变量,变量由PHP垃圾回收机制在“适当”时刻进行回收。

figure_0048_0076常量一旦被定义便不能取消其定义,因此不能使用unset()函数取消常量的定义,否则将造成程序解析错误。

3.3.4 检查变量是否为“空”

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

1.empty()函数

语法格式:boolean empty ( mixed var )

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

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

<?php

class Student{

}

$a = 0;

$b = "0";

$c = "";

$d = NULL;

$e = FALSE;

$f = array();

$g = new Student();

$h = 0.0;

var_dump(empty($a));    //输出bool(true)

echo "<br/>";

var_dump(empty($b));    //输出bool(true)

echo "<br/>";

var_dump(empty($c));    //输出bool(true)

echo "<br/>";

var_dump(empty($d));    //输出bool(true)

echo "<br/>";

var_dump(empty($e));    //输出bool(true)

echo "<br/>";

var_dump(empty($f));    //输出bool(true)

echo "<br/>";

var_dump(empty($g));    //输出bool(false)

echo "<br/>";

var_dump(empty($h));    //输出bool(true)

?>

2.is_null()函数

语法格式:boolean is_ null( mixed var )

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

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

(1)变量未经定义。

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

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

例如,程序is_null.php如下,该程序的运行结果如图3-11所示。

<?php

var_dump(is_null($a));

echo "<br/>";

$b = NULL;

var_dump(is_null($b));

echo "<br/>";

$c = FALSE;

var_dump(is_null($c));

echo "<br/>";

unset($c);

var_dump(is_null($c));

?>

figure_0050_0078
图3-11 is_null函数的示例程序运行结果

3.3.5 数据类型检查函数

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

表3-1 数据类型检查函数
figure_0050_0079

<?php

class Student{

}

$bool = TRUE;

$string = "你好";

$int = 100;

$float = 100.00;

$numeric = "01234.56789";

$array = array(1,3,5);

$object = new Student();

$resource = mysql_connect("localhost","root","");

var_dump(is_bool($bool));    //输出bool(true)

echo "<br/>";

var_dump(is_string($string));   //输出bool(true)

echo "<br/>";

var_dump(is_int($int));    //输出bool(true)

echo "<br/>";

var_dump(is_float($float));   //输出bool(true)

echo "<br/>";

var_dump(is_numeric($numeric));  //输出bool(true)

echo "<br/>";

var_dump(is_array($array));   //输出bool(true)

echo "<br/>";

var_dump(is_object($object));   //输出bool(true)

echo "<br/>";

var_dump(is_resource($resource));  //输出bool(true)

?>

相关教程

共有条评论 网友评论

验证码: 看不清楚?