变量的类型与转换
变量的类型可以分为标量,复合变量和特殊类型
标量的定义:单值变量,一一对应的映射关系包括整型,浮点型,字符串,布尔四种。
复合变量:多值变量,包括数组和对象二种
特殊类型:资源类型resource,null
$file = fopen('demo1.php','r') or die('打开失败');
echo fread($file, filesize('demo1.php'));
fclose($file);
fopen->fread->fclose 是一个完成的资源处理过程
变量类型的查询设置和检测
1.类型查询 gettype($var);
2.类型检测
is_int(),is_float(), is_string(), is_bool(), is_array(), is_abject() , is_null(), is_resource(),is_numercia() 这个is_numercia()还是经常使用的,判断是否为数字或者数字类的字符串。
3.类型转换
包括强制转换 int($name) intval($name)这样的,都是暂时性的改变了变量的值,没有改变变量类型,原值也不变。 但是settype(变量,修改后的变量类型)
重点部分
is_null() ,is_empty(), isset() 三者的区别
一、is_null() 返回true 的三种情况
a.变量已经声明但是还未初始化
b.变量赋值了 null
c . 非空变量销毁了 ,即unset()后的变量也是null类型
$val1; //已声明,但未赋值 $val2 = null; //直接用null初始化变量 $val3 = 'php'; unset($val3); //彻底销毁变量 @var_dump(is_null($val1) ? true : false); //true var_dump(is_null($val2) ? true : false); //true @var_dump(is_null($val3) ? true : false); //true var_dump(is_null('')); //空字符串返回false
点击 "运行实例" 按钮查看在线实例
二、is_empty() 返回true 的情况
a.空字符串,空数组
b.null
c. 赋值为 0,"0",false
总结:
1. 如果一个变量不存在,它即是空,也是null,用is_null() / empty()都可以判断
2. 如果一个变量存在,但它的值对运行结果无影响,则视为空
3. null一定是空,但空不一定是null,因为它可能是空值或0或false
$str1 = ''; $str2 = []; $str3 = '0'; $str4 = 0; $str5 = null; $str6 = false; $str7 = 'peter zhu'; echo '<hr>'; var_dump(empty($str1) ? true : false); //空字符串,true var_dump(empty($str2) ? true : false); //空数组t,true var_dump(empty($str3) ? true : false); //字符型数字0,true var_dump(empty($str4) ? true : false); //数字0,true var_dump(empty($str5) ? true : false); //null值,true var_dump(empty($str6) ? true : false); //true var_dump(empty($str7) ? true : false); //有值且不为空,返回false
点击 "运行实例" 按钮查看在线实例
三、 isset() 是null的取反操作..
总结:变量已经存在,并且它的值不为null,返回true,否则为false
<php $domain = 'www.php.cn'; $name = null; $job; echo '<hr>'; var_dump(isset($var)); var_dump(isset($domain) ? true : false); var_dump(isset($name) ? true : false); var_dump(isset($job) ? true : false); //false,未赋值并不报错,与is_null不同
点击 "运行实例" 按钮查看在线实例
三个函数总结:
1.变量有二种状态: 已声明, 未声明
2. 已声明的变量也有二种状态: 已赋值(初始化), 未赋值(未初始化)
3. 变量可能会被赋值类型: null, 空值, 非空值
3.1: null值: is_null()
3.2: 空值: empty()
3.3: 空值或非空值: isset()
基本使用原则:
1. 对于未声明的变量只能使用isset()进行判断
2. 对于已声明的变量,为空判断用empty(),是否初始化判断用is_null()
作用域
作用域只有三个:
1.全局:函数之外创建,仅在当前脚本除函数之外的地方使用;
2.局部:函数内部创建,仅能在函数中使用,外部不可访问;
3.静态:函数内部创建,仅在函数中使用,函数执行完成它的值不丢失;
全局变量在函数可以用超级全局函数$GLOBALS[] 来调用 如:
$siteName = '学习php';
$GLOBALS['siteName']