PHP支持8种原始类型,包括4种标量类型,即boolean(布尔型)、integer(整型)、float/double(浮点型)和string(字符串型):2种复合类型,即array(数组)和object(对象);2种特殊类型,即resource(资源)与null。
PHP中变量的类型通常不是由程序员设定的,确切地说,是PHP根据该变量使用的上下文在运行时决定的。
只有两个值 true和false
$boo = true;
if ($boo == true) {
echo "true";
} else {
echo "false";
}
在PHP中不是只有false值才为假的,在一些特殊情况下boolean值也被认为是false。这些特殊情况为0、0.0、“0”,空白字符串(”)、只声明没有赋值的数组等。
字符串是连续的字符序列,由数字、字母和符号组成。字符串中的每个字符只占用一个字节。在PHP中,有3种定义字符串的方式,分别是单引号(')、双引号(")和定界符(<<)。
单引号和双引号是经常被使用的定义方式,定义格式如下:
<?php
$a = '这是字符串\'';
echo $a;
$a = "这是字符串'";
定界符(<<<)是从PHP4开始支持的。在使用时后接一个标识符,然后是字符串,最后是同样的标识符结束字符串。
<?php
$a = '这是字符串"';
echo $a;
$string=<<< str
要输出的字符串
str;
echo $string;
str就是指定的标识符
<?php
$i="你好";
echo <<<std
这和双引号没什么区别,\$i可以输出出来
\$i内容为:$i
std;
整型数据类型只能包含整数。在32位的操作系统中,有效的范围是-2147483648~+2147483647。整型数可以用十进制、八进制和十六进制来表示。如果用八进制,数字前面必须加0:如果用十六进制,则需要加0x。
如果在八进制中出现了非法数字(8和9),则后面的数字会被忽略掉。目前php7.4会报错
<?php
$str1 = 1234567890; //十进制
$str2 = 0x1234567890; //十六进制
$str3 = 01234567890; //八进制
$str4 = 01234567; //八进制
if ($str3 == $str4) {
echo "相等";
} else {
echo "不相等";
}
执行上面代码会报错,修改为如下代码
<?php
$str1 = 1234567890; //十进制
$str2 = 0x1234567890; //十六进制
$str3 = 342391;//十进制
$str4 = 01234567; //八进制
echo $str2;
echo "<br>";
echo $str4;
echo "<br>";
if ($str3 == $str4) {
echo "相等";
} else {
echo "不相等";
}
浮点数据类型可以用来存储数字,也可以保存小数。它提供的精度比整数大得多。在32位的操作系统中,有效的范围是1.7E-3081.7E+308。在PHP4.0以前的版本中,浮点型的标识为double,也叫作双精度浮点数,两者没有区别。
浮点型数据默认有两种书写格式,一种是标准格式:
$a = 3.1415926;
$b = -35;
还有一种是科学记数法格式:
<?php
$a = 3.58E1;
$b = 842.78E-3;
echo $a."<br>".$b;
数组是一组数据的集合,它把一系列数据组织起来,形成一个可操作的整体。数组中可以包括很多数据,如标量数据、数组、对象、资源以及PHP中支持的其他语法结构等。
<?php
$array = array('1', '2', '3');
echo print_r($array, true) . "<br>";
$array['4'] = 5;
echo print_r($array, true) . "<br>";
$array = ['1', '2', '3'];
echo print_r($array, true) . "<br>";
$array = array('name'=>'1','age' =>'2', '3');
echo print_r($array, true) . "<br>";
<?php
$array = array('1', '2', '3');
printf("<pre>%s</pre><br>",print_r($array, true));
$array['4'] = 5;
printf("<pre>%s</pre><br>",print_r($array, true));
$array = ['1', '2', '3'];
printf("<pre>%s</pre><br>",print_r($array, true));
$array = array('name'=>'1','age' =>'2', '3');
printf("<pre>%s</pre><br>",print_r($array, true));
编程语言所应用到的方法有两种:面向过程和面向对象。在PHP中,用户可以自由使用这两种方法。后面会有详细讲解
资源类型是PHP4引进的。关于资源的类型,可以参考PHP手册后面的附录,里面有详细的介绍和说明。在使用资源时,系统会自动启用垃圾回收机制,释放不再使用的资源,避免内存消耗殆尽。因此,资源很少需要手工释放。
空值,顾名思义,表示没有为该变量设置任何值。另外,空值(null)不区分大小写,null和NULL效果是一样的。被赋予空值的情况有以下3种:还没有赋任何值、被赋值null、被unset()函数处理过的变量。
<?php
echo "变量\$string1直接赋值为NULL<br>";
$string1 =null;
$string3="str";
if(!isset($string1)){
echo "\$string1=null<br>";
}
if(!isset($string2)){
echo "\$string1=null<br>";
}
echo "变量\$string3 unset<br>";
unset($string3);
if(!isset($string3)){
echo "\$string3=null<br>";
}
is_null()函数用于判断变量是否为null,该函数返回一个boolean型,如果变量为null,则返回true,否则返回false。unset()函数用来销毁指定的变量。
PHP内置了检测数据类型的系列函数,可以对不同类型的数据进行检测,判断其是否属于某个类型,如果符合则返回true,否则返回false。检测数据类型的函数如下表所示。
转化操作符 | 转化类型 |
---|---|
(boolean) | 转化为布尔型 |
(string) | 转化为字符型 |
(integer) | 转化为整形 |
(float) | 转化为浮点数 |
(array) | 转化为数组 |
(object) | 转化为对象 |
在进行类型转换的过程中应该注意以下内容:转换成boolean型时,null、0和未赋值的变量或数组会被转换为false,其他的为true;转换成整型时,布尔型的false转换为0,true转换为1,浮点型的小数部分被舍去,字符型如果以数字开头就截取到非数字位,否则输出0。
类型转换还可以通过settype()函数来完成,该函数可以将指定的变量转换成指定的数据类型。
bool settype(mixed var,string type)
其中,var为指定的变量;type为指定的类型,它有7个可选值,即boolean、float、.integer、aray、null、object和string。如果转换成功,则返回tnue,否则返回false.
当字符串转换为整型或浮点型时,如果字符串是以数字开头的,就会先把数字部分转换为整型,再舍去后面的字符串:如果数字中含有小数点,则会取到小数点前一位。
函数 | 检测类型 |
---|---|
is_bool | 是否是布尔类型 |
is_string | 是否是字符串类型 |
is_float/is_double | 检测是否是浮点类型 |
is_interger/is_int | 是否是整数 |
is_null | 是否是null |
is_array | 是否是数组类型 |
is_object | 检测变量是否是一个对象类型 |
is_numeric | 检测变量是否为数字或者数字组成的字符串 |