PHP开发基础教程之数据类型
概括:
PHP 的数据类型有8种,分别为:String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值), resource(资源)。下面逐一介绍:
一、PHP 字符串
字符串就是一段字符,更通俗的来讲就是一段话,这段话可以很长,也可以很短。
1.在PHP里面中有三种声明字符串的方式
用单引号声明
用英文半角状态下的单引号来把字符串包围起来
<?php //声明字符串变量$str $str= 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言'; //输出字符串 echo $str; ?>
用双引号声明
<?php //声明字符串变量$str $str= “PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言”; //输出字符串 echo $str; ?>
用字界符声明(需要输入非常大段的字符串时使用)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $str = <<<DJ PHP 是 一种创建动态交互<br/> 性站点的强有力的服务器端 <i>脚本语言</i> 我想说:<h1>PHP简介</h1> DJ; echo $str; ?> </body> </html>
2.双引号和单引号有什么区别
双引号解析变量,但是单引号不解析变量。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //声明变量 $name="小明"; $age="24"; //放入字符串中 $str1="我叫$name ,今年$age 岁,很高兴认识大家"; $str2='我叫$name ,今年$age 岁,很高兴认识大家'; //输出字符串 echo $str1; echo "<br/>"; echo $str2; ?> </body> </html>
通过上面可以得出结论:双引号执行变量,而单引号不执行变量
注:双引号需要解析变量,因此双引号的效率没有单引号高
在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //声明变量 $a="php.com"; $str1="$a欢迎您"; $str2="$a 欢迎您"; echo $str1; echo "<br/>"; echo $str2; ?> </body> </html>
从报错中可以看出,第一个把“a欢迎您”当成了一个变量,第二个正常输出。
如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
稍微改动下上面的例子
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //声明变量 $a="php.com"; $str1="$a 欢迎您"; $str2="{$a}欢迎您"; echo $str1; echo "<br/>"; echo $str2; ?> </body> </html>
双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //声明字符串 $str1 = "改变世界之前\n请先\t改变你自己"; $str2 = '改变世界之前\n请先\t改变你自己'; echo $str1; echo "<hr/>"; echo $str2; ?> </body> </html>
注:关于“单引号能解析\' 和\”,大家壳子自己动手尝试着去做下
单引号效率高于双引号,尽可能使用单引号
双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $a='黄河'; $str="白日依山尽,'$a'入海流"; echo $str; ?> </body> </html>
注:大家可以尝试下双引号里面套双引号会出现什么情况
神奇的字符串拼接胶水——(.)点,用来拼接字符串。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //声明变量 $name="小明"; $age="24"; //放入字符串中 $str1="我叫$name ,今年$age 岁,很高兴认识大家"; $str2='我叫$name ,今年$age 岁,很高兴认识大家'; //输出字符串 echo $str1; echo "<br/>"; echo $str2; ?> </body> </html>
这是之前的一个例子,前面提到过双引号能够解析变量,但是效率没有单引号高,我现在想既能够解析变量,又效率高,那就只有依靠(.)来帮助我们了
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //声明变量 $name="小明"; $age="24"; //放入字符串中 $str='我叫'.$name.' ,今年'.$age.' 岁,很高兴认识大家'; //输出字符串 echo $str; ?> </body> </html>
(.)点还可以用来连接多个字符串
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //声明变量 $str1 = '白日依山尽<br/>'; $str2 = '黄河入海流<br/>'; $str3 = '欲穷千里目<br/>'; $str4 = '更上一层楼<br/>'; echo $str1.$str2.$str3.$str4; ?> </body> </html>
我们将定界符声明字符串视为双引号一样的功能来看待。
实例:
<?php $a = '宣布对用户提现收费'; $b = '支付行业巨头的收费行动'; $str = <<<DJ 支付宝 $a 这也是\t微信在年初宣布提现收费之后 又一 '$b' 很<br /> 多人\n质疑 <i>互联网公司</i> 所提倡的免费<b>商业模式</b>难道走到了尽头 DJ; echo $str; ?>
大家可以执行发现$,$,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。
3.关于字符串的两个实用的函数
strlen(字符串)返回字符串的长度(字符数)
strpos(被查找的字符串,查找的字符或者文本)如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
实例:
<?php //输出一个字符串的长度 echo strlen("Hello world"); echo "<br/>"; //在字符串 "Hello world!" 中查找文本 "world",字符串中第一个字符的位置是 0,而不是 1。 echo strpos("Hello world","world") ?>
注:字符串中首字符的位置是 0 而不是 1
完整字符串函数,请查看PHP参考手册
二、PHP 整型
整数就是一个没有小数的数字。
整数规则:
整数必须至少有一个数字 (0-9)
整数不能包含逗号或空格
整数是没有小数点的
整数可以是正数或负数
整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
在以下实例中我们将测试不同的数字。 PHP var_dump() 函数返回变量的数据类型和值:
注:var_dump() 是一个函数。向括号()中间插入变量。这个函数,会打印出来数据类型,还会对应显示变量的长度和值
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //定义变量 $x = 5985; $y = -345; // 负数 $z = 0x8C; // 十六进制数 $w = 047; // 八进制数 //输出变量 var_dump($x); echo "<br>"; var_dump($y); echo "<br>"; var_dump($z); echo "<br>"; var_dump($w); ?> </body> </html>
三、浮点型
所谓浮点类型,既为我们数学里面的小数。
下面通过实例,测试不同的数字
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //定义变量 $x = 10.365; $y = 2.4e3; $z = 8E-5; //输出变量 var_dump($x); echo "<br>"; var_dump($y); echo "<br>"; var_dump($z); ?> </body> </html>
四、布尔型
所谓布尔,可以理解为事物的两面性,有真就有假,有对就有错,当前的计算机系统使用的基本上是二进制系统,即为0和1的组合
布尔型只有两个值: TRUE 或 FALSE
$x=true;
$y=false;
常用于条件判断,在以后的学习中,你会经常和他打交道。
注:true和false外面不要加引号
类型转换:
一下情况会被转换为false
布尔值=false
整数=0
浮点数=0.0
空数组
没有变量成语的对象
变量值为空
其余情况下,基本会被转换为true
五、数组
上面定义的变量只能存储一个值,如果想要存储多个值的话,则就要用到数组了
在以下实例中创建了一个数组, 然后使用 PHP var_dump() 函数返回数组的数据类型和值:
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //定义变量 $fruits=array("苹果","香蕉","梨子"); //输出变量 var_dump($fruits); echo gettype($fruits); ?> </body> </html>
大家先对数组有个了解,掌握基本声明一个数组,判断是否是数组类型,其他的在后面有专门一章来讨论数组。
六、对象
对象数据类型也可以用于存储数据。
在 PHP 中,对象必须声明。
首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。
然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:
来看个实例:
<?php //定义一个Car 类 class Car { var $color; function Car($color="green") { $this->color = $color; } function what_color() { return $this->color; } } //实例化Car类 $car = new Car; //输出查看类型 var_dump($car); ?>
对象这个暂时大家不用深究,以后会慢慢了解,暂时只要看到这个object知道是对象就可以了。
七、空值
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。空(null)不是false,不是0,也不是空格。
1.null 产生的三种情况:
通过变量赋值明确指定为变量的值为NULL
一个变量没有给任何值
使用函数unset()将变量销毁掉
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //声明变量为null $n = null; var_dump($n); //var_dump显示输出变量$meiyou,看看结果是什么? var_dump($a); //声明一个变量$b的值为字符串的手机 $b = '手机'; //unset销毁掉一个变量 unset($b); var_dump($b); ?> </body> </html>
2.empty和isset 两个函数的区别
empty()函数
empty()可以向括号中间传入一个变量。这个变量的值如果为false或者为null的话,返回true。
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $a=null; if(empty($a)){ echo '这个变量是空'; }else{ echo '这个变量不是空'; } ?> </body> </html>
当$a=null 时empty返回true。
isset()函数
isset()可以向括号中间传入一个或者多个变量,变量与变量间用逗号分开。只要有有一个变量为null,则返回false。否则,则返回true。
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //传入一个变量 $a=false; $b=isset($a); var_dump($b); echo "<hr/>"; //传入多个变量 $b=10; $c=false; $d=null; $e=isset($b,$c,$d); var_dump($e); echo PHP_VERSION; echo __LINE__; ?> </body> </html>
注:unset()这个函数的功能是毁掉变量。unset(变量)括号中间插入想要毁掉的变量名,这个变量就会被毁掉,大家可以自己动手销毁,然会用var_dump()函数说出来看看效果。
八、资源类型
资源类型很多初学者觉得比较难以理解。因为资源类型打印出来只能够看到一个英文的resource。其他的什么在电脑上都不能显示出来,而他有客观存在。
其实,资源类型很简单。我们针对词来进行说明。
电脑里面的资源是指:
word,excel等文件
有人收藏的美女图片和我们的自拍照片等图片
音乐
某些人爱看的AVI小电影
打开的网页
数据库
... ...等等
我们打开一个图片,用PHP来操作它,我们就是操作的一个资源。
我们打开的数据库连接,我们需要连接数据库,数据库就是我们操作的资源。
包括网络连接,连接后发送邮件,我们也可以认为是一个资源。
注:理解资源就提操作我们可见和不可见的文件、网络和数据。我们在以后的章节中,操作图片和网络的时候大家会有更为深刻的印象。
九、查看和判断数据类型
1.查看数据类型
在以后的学习和工作中,进行需要知道一个数据的数据类型,通过以下两个函数可以知道
gettype(传入一个变量) 能够获得变量的类型
var_dump(传入一个变量) 输出变类型和值
实例:
<?php //声明变量,输出其类型 $str = 9.99; $type = gettype($str); echo $type; echo "<br/>"; $str1 = true; $type1 = gettype($str1); echo $type1; echo "<br/>"; //声明变量,输出其类型和值 $str2 = "霸都"; var_dump($str2); echo "<br/>"; $arr = array(1,23,4); var_dump($arr); ?>
注:大家可以再尝试输出下其他几种类型
2.判断数据类型
我们使用is_* 系列函数。 is_types这一系列的函数,来进行判断某个东西是不是某个类型。如果是这个类型返回真,不是这个类型返回假。
is_int 是否为整型
is_bool 是否为布尔
is_float 是否是浮点
is_string 是否是字符串
is_array 是否是数组
is_object 是否是对象
is_null 是否为空
is_resource 是否为资源
is_scalar 是否为标量
is_numeric 是否为数值类型
is_callable 是否为函数
实例:
<?php $fo = false; var_dump(is_bool($fo)); var_dump(is_null($fo)); $str='18.8'; var_dump(is_string($str)); ?>
注:大家可以尝试其他几个,看看输出结果