php基础:变量命名、传值、检测、类型转换、动态变量名

变量定义:变量来源于数学。是计算机语言中能储存计算结果或能表示值的抽象概念。即在程序运行过程中它的值是允许改变的量。

变量的命名规范:变量名由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,falsenull什么都不显示

print_r 打印层次化的数据 ,比如对象和数组 不要用echoprint_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

posted @ 2016-10-14 22:51  出来混迟早要胖的  阅读(589)  评论(0编辑  收藏  举报