变量定义:变量来源于数学。是计算机语言中能储存计算结果或能表示值的抽象概念。即在程序运行过程中它的值是允许改变的量。
变量的命名规范:变量名由A到Z、a到z,数字0-9,和_组成,并且区分大小写,不能以数字开头。
变量赋值方式有二种传值赋值和引用赋值。
1.传值赋值,传值赋值是当将一个表达式的值赋予一个变量时,新的变量在内存中的指针指向原变量的的值,当一个变量的值赋予另一个变量时,改变其中一个变量的值,将不会影响到另一个变量。如 $a = 2;(将等号右边的值2赋给等号左边的值$a)
2.引用赋值,引用赋值是 新的变量在内存中的指针指向了原始变量在内存存储的地址,任意改变其中一个变量的值,另外一变量的值也会改变,如($a = 8; $b = &$a;)
举列子就是:如2个人在电视,传值赋值就是2个人在2台电视看同一个台,一个人换台了,不影响另外一个人接着看前面的那台。引用赋值是2个人在看同一台电视,一个人换台了,2个人都要看新的台。
变量的类型有8种,内存中的变量值并不是只储存了变量值,还储存了它的变量类型
1.整型(integer)数学中的整数 如1,789;
2字符串型(string) 一串字符 如‘adbcdf';
3浮点型(float,double)数学中的小数 如’3.115926‘;
4布尔型(boolean)真和假 false和true;
5.null 没有值 值标注了它的类型为NULL 它的值的字段是空的,null是没有值的。
6数组(array) 键值对符合数据 如$a = array(name=>'zhansan',age=>'23');
7.对象(object)对象是存储数据和有关如何处理数据的信息的数据类型。对象由2部分组成 属性和方法
8资源(resource) 是可读可写的一组数据
变量的检测:
echo一个不存在的变量,会报notice(注意,警告)错误,所以要检测一下这个变量是不是存在;
1.isset()函数——检测变量是否设置(声明),已经声明的变量且值不为NULL的变量 检测结果返回true 否则全部返回false 检测多个变量时,每个单项符合要求才会返回true,否则结果为false,isset()函数只能用于检测变量,传递任何其他的参数都会解析错误,
检测常量是否设置(声明)可以用defined()函数
2.empty()函数——检测一个变量是否为空,若变量不存在则返回 TRUE,若变量存在且其值为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE
若变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 FALSE。 empty() 只能用于变量,传递任何其它参数都将造成Paser error而终止运行。
以下值,都被理解为成布尔型值的假,'0',0,0.0,false,NULL,array();而其它值,都被当成布尔型的真
变量类型的检测:
检测一个变量,php是把它存储成一个什么的样的类型
gettype()——获取变量的类型 不过尽量不要使用 gettype() 来测试某种类型,因为其返回的字符串在未来的版本中可能需要改变。此外,由于包含了字符串的比较,它的运行也是较慢的。使用 is_* 函数代替。
is_float()[is_double] 检测变量是否为浮点型
is_int()[is_integer] 检测变量是否为整型
is_string() 检测变量是否为字符串
is_object() 检测变量是否为对象
is_array() 检测变量是否为数组
is_resource 检测变量是否为资源类型
is_bool 检测变量是否是布尔型
is_null 检测变量是否为 NULL
调试打印变量:
开发程序的时候,不可避免的要打印变量的值
echo 打印字符串和数字 布尔型的true会打印出1,false和null什么都不显示
print_r 打印层次化的数据 ,比如对象和数组 不要用echo和print_r打印布尔型的值,因为会干扰我们 用var_dump打印布尔和null
var_dump 打印变量的类型和值(调试代码方便)
类型转换
PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:
•(int)、(integer):转换成整形
•(float)、(double)、(real):转换成浮点型
•(string):转换成字符串
•(bool)、(boolean):转换成布尔类型
•(array):转换成数组
•(object):转换成对象
PHP数据类型有三种转换方式:
•在要转换的变量之前加上用括号括起来的目标类型
•使用3个具体类型的转换函数,intval()、floatval()、strval()
•使用通用类型转换函数settype(mixed var,string type)
第一种转换方式: (int) (bool) (float) (string) (array) (object)
1.<?php
2.$num1=3.14;
3.$num2=(int)$num1;
4.var_dump($num1); //输出float(3.14)
5.var_dump($num2); //输出int(3)
6.?>
第二种转换方式: intval() floatval() strval()
1.<?php
2.$str="123.9abc";
3.$int=intval($str); //转换后数值:123
4.$float=floatval($str); //转换后数值:123.9
5.$str=strval($float); //转换后字符串:"123.9"
6.?>
第三种转换方式: settype();
1.<?php
2.$num4=12.8;
3.$flg=settype($num4,"int");
4.var_dump($flg); //输出bool(true)
5.var_dump($num4); //输出int(12)
6.?>
销毁变量
为什么要销毁变量
因为,有时,比较大的的数组,或者比较大的对象,特别是GD画图时,比较耗费资源,将它unset掉,可以及时释放出内存,
unset():销毁指定的变量。(首先在内存中找到变量名,删除设置声明的变量名,存储变量名的地址一并删除,但是要注意,如果是引用赋值,二个变量指向内存的同一个地址,当销毁其中一个变量时,只会销毁变量名不会销毁变量储存在内存的的地址)
动态变量名 了解就好 代码中要少用 注意代码的整洁性和易读性
动态变量名可以体现PHP非常灵活的一个地方,用变量的值去做另外一个变量的名
$laoda = 'liubei';
$paihang = 'laoda';
echo $paihang; //laoda echo $$paihang; //liubei
$rank = 'paihang';
echo $$$rank; //liubei