变量类型变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
Integer 整形整数必须至少有一个数字 (0-9)
整数不能包含逗号或空格
整数是没有小数点的
整数可以是正数或负数
整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)
1
2
3
4
5
6
7
8
9
10
11$x = 5985;
var_dump ($x); //int (5985)
echo "
";
$x = -345; // 负数
var_dump ($x); //int (-345)
echo "
";
$x = 0x8C; // 十六进制数
var_dump ($x); //int (140)
echo "
";
$x = 047; // 八进制数
var_dump ($x); //int (39)
Float 浮点型浮点数是带小数部分的数字,或是指数形式
1
2
3
4
5
6
7
8$x = 10.365;
var_dump ($x); // float(10.365)
echo "
";
$x = 2.4e3;
var_dump ($x); // float(2400)
echo "
";
$x = 8E-5;
var_dump ($x); // float(8.0E-5)
String 字符串一个字符串是一串字符的序列,就像 “Hello world!”
你可以将任何文本放在单引号和双引号中
1
2
3
4
5$x = "Hello world!";
echo $x; // Hello world!
echo "
";
$x = 'Hello world!';
echo $x; // Hello world!
Boolean 布尔型布尔型可以是 TRUE 或 FALSE
1
2$x=true;
$y=false;
布尔型通常是用于条件判断
Array 数组数组可以在一个变量中存储多个值
1
2$arr=array ("Volvo","BMW","Toyota");
var_dump ($arr); //array (3){[0]=>string (5)"Volvo" [1]=>string (3)"BMW" [2]=>string (6)"Toyota"}
Object 对象对象数据类型也可以用于存储数据
在 PHP 中,对象必须声明
首先,你必须使用 class 关键字声明类对象。类是可以包含属性和方法的结构
然后我们在类中定义数据类型,然后在实例化的类中使用数据类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25class Car
{
var $color;
function __construct ($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
function print_vars ($obj) {
foreach (get_object_vars ($obj) as $prop => $val) {
echo "\t$prop = $val\n";
}
}
// 实例一个对象
$herbie = new Car ("white");
// 显示 herbie 属性
echo "\therbie: Properties\n";
print_vars ($herbie);
//herbie: Properties color = white
NULL 空值NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值
NULL 值指明一个变量是否为空值。 同样可用于数据空值和 NULL 值的区别
可以通过设置变量值为 NULL 来清空变量数据
1
2
3$x="Hello world!";
$x=null;
var_dump ($x); // NULL
变量检测isset — 检测变量是否已设置并且非 NULL
1isset ( mixed $var [, mixed $... ] ) : bool
检测变量是否设置,并且不是 NULL
如果已经使用 unset () 释放 / 销毁了一个变量之后。若使用 isset () 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是 null 字符(”\0”)并不等同于 PHP 的 NULL 常量
如果一次传入多个参数,那么 isset () 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止
例子1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23$var = '';
// 结果为 TRUE,所以后边的文本将被打印出来。
if (isset ($var)) {
echo "This var is set so I will print.";
}
// 在后边的例子中,我们将使用 var_dump 输出 isset () 的返回值。
//the return value of isset ().
$a = "test";
$b = "anothertest";
var_dump (isset ($a)) // TRUE
var_dump (isset ($a, $b)); // TRUE
unset ($a);
var_dump (isset ($a)); // FALSE
var_dump (isset ($a, $b)); // FALSE
$foo = NULL;
var_dump (isset ($foo)); // FALSE
类型检测
gettypegettype — 获取变量的类型1
2
3
4
5ettype ( mixed $var ) : string
Warning
不要使用 gettype () 来测试某种类型,因为其返回的字符串在未来的版本中可能需要改变。此外,由于包含了字符串的比较,它的运行也是较慢的。
可以使用 is_* 函数代替。
1
2$a = '1';
echo gettype ($a); //string
返回的字符串的可能值为:
“boolean”(从 PHP 4 起)
“integer”
“double”(由于历史原因,如果是 float 则返回 “double”,而不是 “float”)
“string”
“array”
“object”
“resource”(从 PHP 4 起)
“NULL”(从 PHP 4 起)
“user function”(只用于 PHP 3,现已停用)
“unknown type”
is_*is_* — 判断是否是想要的类型
is_int,is_float,is_array,is_integer (),is_string (),is_object ()
1
2
3
4
5
6
7
8$a = '1';
if(is_int ($a)){
echo 'a 是整形 ';
} else {
echo 'a 不是整形 ';
}
//a 不是整形
变量打印echo,print,var_dump
echo — 可以输出一个或多个字符串
print_r — 以易于理解的格式打印变量
var_dump — 打印变量的相关信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34$a = 1;
$b = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'))
$c = array (1, 2, array ("a", "b", "c"));
echo $a; // 1
print_r ($b); // 输出结果
// Array
// (
// [a] => apple
// [b] => banana
// [c] => Array
// (
// [0] => x
// [1] => y
// [2] => z
// )
// )
var_dump ($b); // 输出结果
//array (3) {
// [0]=>
// int (1)
// [1]=>
// int (2)
// [2]=>
// array (3) {
// [0] =>
// string (1) "a"
// [1] =>
// string (1) "b"
// [2] =>
// string (1) "c"
// }
// }
类型转换PHP 中,变量的类型是可以随时转变的,最常见的是字符串与数字的转换,或是数字 / 字符串 -> 布尔值的转换
1
2
3
4
5
6
7
8
9
10
11// 字符串到数字的转换,从左到右截取,直到碰到不合法的数字,截取出来的部分转成数字
$a = '12';
$a = $a + 3;
var_dump ($a); //int (15)
$a = 123;
$a = $a . 'hello';
echo $a; // 123hello
// 到布尔值的转换,以下值,都被当成布尔值的假,而其他值,都被当成布尔值的真
// '', '0', 0, 0.0, NULL, FALSE, array (), var $var
赋值传值赋值与引用赋值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17// 传值赋值
$li = 29;
$wang = 23;
$wang = $li;
var_dump ($li, $wang); //29, 29
$wang = 'w';
var_dump ($li, $wang); //29, w
// 引用赋值
$li = 29;
$wang = 23;
$wang = &$li;
var_dump ($li, $wang); //29, 29
$wang = 'w';
var_dump ($li, $wang); //w, w
释放 / 销毁unset — 释放给定的变量
1unset ( mixed $var [, mixed $... ] ) : void
unset () 销毁指定的变量
unset () 在函数中的行为会依赖于想要销毁的变量的类型而有所不同
如果在函数中 unset () 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset () 之前一样的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18$a = 99;
unset($a);
if(isset ($a)){
echo 'a 存在 ';
} else {
echo 'a 不存在 ';
}
//a 不存在
$li = 29;
$wang = &$li;
var_dump ($li, $wang); //29, 29
$wang = 20;
var_dump ($li, $wang); //20, 20
unset($li);
var_dump ($li, $wang); //null, 20
// 销毁后会提示 Notice: Undefined variable: li in xxxxxx
动态变量名用变量的值再做变量的名,如 $$a;
1
2
3
4
5
6// 动态变量名
$liubei = ' 河北人 ';
$laoda = 'liubei';
$paihang = 'laoda';
echo $laoda, $$laoda, $$$paihang; //liubei, 河北人,河北人