PHP 支持8种基本的数据类型。
四种标量类型:
两种复合类型:
最后是两种特殊类型:
为了确保代码的易读性,本手册还介绍了一些伪类型:
以及伪变量 $....
可能还会读到一些关于“双精度(double)”类型的参考。实际上 double 和 float 是相同的,由于一些历史的原因,这两个名称同时存在。
变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的上下文在运行时决定的。
Note: 如果想查看某个表达式的值和类型,用 var_dump()。
如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype()。要查看某个类型,不要用 gettype(),而用 is_type 函数。以下是一些范例:
<? php $a_bool = TRUE ; // a boolean $a_str = " foo " ; // a string $a_str2 = ' foo ' ; // a string $an_int = 12 ; // an integer echo gettype ( $a_bool ); // prints out: boolean echo gettype ( $a_str ); // prints out: string // If this is an integer, increment it by four if ( is_int ( $an_int )) { $an_int += 4 ; } // If $bool is a string, print it out // (does not print out anything) if ( is_string ( $a_bool )) { echo " String: $a_bool " ; } ?>
如果要将一个变量强制转换为某类型,可以对其使用强制转换或者 settype() 函数。
注意变量根据其当时的类型在特定场合下会表现出不同的值。更多信息见类型戏法。此外,你还可以参考 PHP 类型比较表看不同类型相互比较的例子。
#
二、PHP的数据类型
Int zjj
=
100
;
//
这种赋值是对的
Int zjj
=
"
hello,world
"
;
//
这种编译器就会提示错误
在PHP中,对变量的数据类型不需要声明,可以直接赋值。如下面的
$zjj
=
100
;
//
表示zjj为整型
$zjj
=
"
hello,world
"
//
表示zjj为字符串型
PHP中的数据类型分成两种:一是标量数据类型,另一种就是复合数据类型。
标量数据类型有:
布尔型(boolean) 整型(integer) 浮点型(foat也叫做double)
复合数据有:
数组(array) 对象(
object
)
还有两种特殊的数据
资源(resource) 空值(NULL)
1
、布尔型是最简单的变量,布尔变量:true和false值
要设定一个布尔变量,只需将这两个值赋给变量就行了。PHP中就算是关键字也可以做变量名。
<?
php
$True
=
"
我是变量
"
. True;
//
这里有点的,书上有时印刷并没有。
echo($True);
echo(
"
<BR>
"
);
//
起到回车的作用
echo(
"
我是关键字
"
. True)
?>
执行结果:我是变量1
//
这里true就是1
我是关键字1
true和false实际上是代表数值1和0,因此true在输出时显示为1,但是在给变量赋值的时候,如果赋值为1,则被当成整型,如果被赋值为true,则被当成布尔型
当转换为布尔型时,以下值被认为是false
(
1
)布尔值false
(
2
)整型值0(零)
(
3
)浮点型值0.
0
(零)
(
4
)空白字符串和字符串
"
0
"
(
5
)没有成员变量的数组
(
6
)没有单元的对象(仅适用php4)
(
7
)特殊类型NULL
而所有其他值都被认为是TRUE包括任何资源。
2
、整型
+
2147483647到
-
2147483647
<?
php
$int_D
=
2147483647
;
//
十进制赋值
echo($int_D);
echo(
"
<br>
"
);
$int_H
=
0x7FFFFFFF
;
//
十六进制赋值
echo($int_H);
echo(
"
<br>
"
);
$int_O
=
017777777777
;
//
八进制赋值
echo($int_O);
echo(
"
<BR>
"
);
?>
执行结果:
2147483647
2147483647
2147483647
如果指定一个数超出了inter的范围,将会被解释为float
3
、浮点型
1
.7E
-
308到1.7E
+
308
<?
php
$float_1
=
90000000000
;
echo($float_1);
echo(
"
<br>
"
);
$float_2
=
9E10;
echo($float_2);
echo(
"
<br>
"
);
$float_3
=
9E
+
10
;
echo($float_3);
?>
执行结果:
90000000000
90000000000
90000000000
4
、字符串
PHP中有三种方式定义字符串
1
、单引号方式。
$single_str
=
'
我是人
'
;
如果想在浏览中输出单引号,必须在字符串中加入转义符号“\”
<?
$single_str
=
'
我被单引号括起来了!<br>
'
; //正常输出
echo $single_str;
$single_str
=
'
输出单引号: \'嘿嘿,我在单引号里面\'<br>
'
; //加了转义符可以输出单引号
echo $single_str;
$single_str
=
'
输出双引号:"我在双引号里面"<br>
'
; //正常输出
print $single_str;
$single_str
=
'
输双美元符号:$
'
; //正常输出
print $single_str;
?>
执行结果:
我被单引号括起来了
!
输出单引号:
'
嘿嘿,我在单引号里面
'
输出双引号:
"
我在双引号里面
"
输双美元符号:$
(
2
)、双引号方式
$Double_Str
=
"
我是人
"
为了在字符串中输出各种特殊字符,可以使用转义符
$Double_Str
=
"
输出美元符号:\$
"
;
$Double_Str
=
"
输出反斜杠:\\
"
;
<?
$Double_str
=
"
我被双引号括起来了!<br>
"
;
echo $single_str;
$single_str
=
"
输出单引号:'嘿嘿,我在单引号里面'<br>
"
;
//
不需要转义符
echo $single_str;
$single_str
=
"
输出双引号:\"我在双引号里面\"<br>
"
;
//
需要转义符
print $single_str;
$single_str
=
"
输出美元符号:\$ <br>
"
;
//
需要转义符
print $single_str;
$single_str
=
"
输出反斜杠 :\\ <br>
"
;
//
需要转义符
print $single_str;
?>
执行结果:
输出单引号:
'
嘿嘿,我在单引号里面
'
输出双引号:
"
我在双引号里面
"
输出美元符号:$
输出反斜杠 :\
(
3
)、Heredoc 方式给字符串赋值
<?
$zjj1_str
=<<<
zjj //
=<<<
这个相当于链接符,获取zjj到zjj中间的数据
你好
<
br
>
美元符号 $
<
br
>
//zjj1和zjj都是可以随便起名字的。
反斜杠 \
<
br
>
"
我爱你
"
<
br
>
'
我恨你
'
zjj;
echo $zjj1_str;
?>
执行结果:
你好
美元符号 $
反斜杠 \
"
我爱你
"
'
我恨你
'
(
4
)、串中的变量
<?
php
$str_1
=
"
我是变量的值!
"
;
$str_2
=
"
str_1 : $str_1<br>
"
;
//
双引号字符串中包含变量$str_1
echo $str_2;
$str_1
=
'
我是变量的值
'
;
$str_2
=
'
str_1 : $str_1<br>
'
;
//
单引号中包含字符串的值
echo $str_2;
$str_1
=
"
我是变量的值!
"
;
$str_2
=
"
str_1 : $str_12 <br>
"
;
//
引用的变量名后,多了个字符2即$str_12
echo $str_2;
$str_1
=
"
我是变量的值!
"
;
$str_2
=
"
str_1 : ${str_1}2 <br>
"
;
//
引用的变量名后,多了个字符2即$str_12
echo $str_2;
?>
执行结果:
str_1 : 我是变量的值
!
str_1 : $str_1
str_1 :
str_1 : 我是变量的值
!
2
从输出可以看出,双引号字符串是赋值的含义,直接输出变量的值。而单引号的字符串,包含的是变量的名称,可以理解为直接运行语句的结果,直接输出变量的名称而不是变量的值。
$str_2
=
"
str_1 : $str_12 <br>
"
; 这句如果变量后面跟着非空格的字符,会让编译器糊涂,会把$str_12当成变量,而上面又没有定义,因此会输出空值。为了解决这个问题可以用${str_1}
2
或{$str_1}
2
这个来表达。
表达式 | gettype() | empty() | is_null() | isset() | boolean : if($x) |
---|---|---|---|---|---|
$x = ""; | string | TRUE | FALSE | TRUE | FALSE |
$x = null; | NULL | TRUE | TRUE | FALSE | FALSE |
var $x; | NULL | TRUE | TRUE | FALSE | FALSE |
$x is undefined | NULL | TRUE | TRUE | FALSE | FALSE |
$x = array(); | array | TRUE | FALSE | TRUE | FALSE |
$x = false; | boolean | TRUE | FALSE | TRUE | FALSE |
$x = true; | boolean | FALSE | FALSE | TRUE | TRUE |
$x = 1; | integer | FALSE | FALSE | TRUE | TRUE |
$x = 42; | integer | FALSE | FALSE | TRUE | TRUE |
$x = 0; | integer | TRUE | FALSE | TRUE | FALSE |
$x = -1; | integer | FALSE | FALSE | TRUE | TRUE |
$x = "1"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "0"; | string | TRUE | FALSE | TRUE | FALSE |
$x = "-1"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "php"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "true"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "false"; | string | FALSE | FALSE | TRUE | TRUE |
TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | "" | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE |
FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE |
1 | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
0 | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE |
-1 | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
"1" | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"0" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
"-1" | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
NULL | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE | TRUE |
array() | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE | FALSE |
"php" | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
"" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE |
TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | "" | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
1 | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
0 | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
-1 | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"1" | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"0" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
"-1" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
NULL | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE |
array() | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE |
"php" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
"" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE |