类型
PHP一共有如下类型:
- Boolean 布尔类型
- integer 整型
- float 浮点型,也称作 double
- string 字符串
- array 数组 PHP里用得最多的类型,一定要掌握
- object 对象
- callable(可调用)
- resource(资源)
- NULL(无类型)
在PHP手册里,还有一些伪类型,这些是为了方便阅读代码。
- mixed(混合类型)
- number(数字类型)
- callback(回调类型,又称为 callable)
- array|object(数组 | 对象类型)
- void (无类型)
Boolean 布尔类型
布尔类型只有两个值,常量 TRUE 或 FALSE。两个都不区分大小写。
<?php
/* example_06.php */
$isReady = true; /* 一般来说布尔类型建议用 is 来开头 */
if ($isReady) {
echo "我准备好了。\n";
} else {
echo "再给点时间准备吧。\n";
}
$isRich = 1; // 大家可以把 $isRich 设置成 "", -1, 2.333, null, "false" 自行测试一下。
if ($isRich) { // 这里会有一个隐性转换,会把 $isRich 由 1 转成 true
echo "我是一个富人。\n";
} else {
echo "我好穷呀。\n";
}
$isOld = 1;
if ($isOld === true) { // 这里是三个等于号,必须类型还有值都一样才能相等,1虽然等于 true 但类型一个是int 一个是布尔 就不相等
echo "我老了。\n";
} else {
echo "我还年轻。\n";
}
/** 重要 **/
var_dump((bool) false); // bool(false)
var_dump((bool) 0); // bool(false)
var_dump((bool) 0.00); // bool(false)
var_dump((bool) ""); // bool(false)
var_dump((bool) "0"); // bool(false)
var_dump((bool) array()); // bool(false)
var_dump((bool) []); // bool(false)
var_dump((bool) null); // bool(false)
var_dump((bool) "00"); // bool(true)
var_dump((bool) "0.0"); // bool(true)
var_dump((bool) -1); // bool(true)
var_dump((bool) 1); // bool(true)
var_dump((bool) "abc"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) [12]); // bool(true)
var_dump((bool) NAN); // bool(true)
// 类型判断
var_dump(is_bool($isRich)); // bool(false)
var_dump(is_int($isRich)); // bool(true)
在Sublime Text 3 下执行结果如下:
我准备好了。
我是一个富人。
我还年轻。
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
if
语句就是布尔类型使用较多的场景,只要 if
括号里的条件为true,那么就执行相关的语句。
使用 var_dump 可以打印出各种类型。
if ($isReady) { // 相当于 if ($isReady == true) 的简写
if ($isRich) { // 这里会有一个隐性转换,会把 $isRich 由 1 转成 true 相当于 if ((bool) $isReady)
if ($isOld === true) { // 这里是三个等于号,必须类型还有值都一样才能相等,1虽然等于 true 但类型一个是int 一个是布尔 就不相等
var_dump((bool) ""); // 中的 (bool) 表示强制把 "" 转换成 bool 类型
is_bool() 和 is_int 都是类型判断函数,返回值为 布尔类型
Integer 整型
Integer 整型,就是初中数学里定义的整数,有正负之分。
有二进制、八进制、十进制、十六进制等几种方法来表示整数,前面可以正号(+)负号(-)。
- 二进制 用0和1来表示一个数字 数字前加 0b 例如 0b101 -0b101 0b后面只有0和1
- 八进制 用0-7来表示一个数字 数字前加 0 例如 0123 -0123
- 十进制 用0-9来表示一个数字 123 -123
- 十六进制 用0-9加ABCDEF来表示一个数字 数字前加 0x 例如 0x1F -0x1F
在32位系统和64位系统里,Integer类型的最大最小值是不一样的。在特殊情况下,要注意数据越界溢出。
<?php
/* example_07.php */
$a = 1234; // 十进制 1234
$b = 0b10011010010; // 二进制 1234
$c = 02322; // 八进制 1234
$d = 0x4d2; // 十六进制 1234
// var_dump 可以同时打印多个变量
var_dump($a, $b, $c, $d);
// 十进制转成二进制字符串
var_dump(decbin($a)); // string(11) "10011010010"
// 十进制转成八进制字符串
var_dump(decoct($a)); // string(4) "2322"
// 十进制转成十六进制字符串
var_dump(dechex($a)); // string(3) "4d2"
// 可以使用 (int) 或者 intval() 来强制把一个类型转成 int 类型
var_dump(22/3); // float(7.3333333333333)
var_dump((int)(22/3)); // int(7)
var_dump(intval(22/3)); // int(7)
var_dump(round(22/3, 2)); // float(7.33) round函数的第二个参数为保留小数点几位
在Sublime Text 3 下执行结果如下:
int(1234)
int(1234)
int(1234)
int(1234)
string(11) "10011010010"
string(4) "2322"
string(3) "4d2"
float(7.3333333333333)
int(7)
int(7)
float(7.33)
Float 浮点型
Float、Double、Real都是浮点型
<?php
/* example_08.php */
$a = 1.234; // float(1.234)
$b = 1.23e4; // float(12300)
$c = 5E-10; // float(5.0E-10)
var_dump($a, $b, $c);
/* 片断二 */
$d = (0.1 + 0.7) * 10;
var_dump($d, floor($d));
if ($d == 8) {
echo "我等于8\n";
} else {
echo "我不等于8\n";
}
/* 片断三 */
/* bccomp 如果两个数相等返回0, 左边的数大返回1, 左边小则返回-1. 下面的2为只比较前2位的小数位 */
if (bccomp($d, 8, 2) === 0) {
echo "我等于8\n";
} else {
echo "我不等于8\n";
}
在Sublime Text 3 下执行结果如下:
float(1.234)
float(12300)
float(5.0E-10)
float(8)
我不等于8
我等于8
大家可以看到片断二中的代码理论上应该返回的是相等,但结果不等。(0.1 + 0.7) * 10 在计算机内部,可能是7.999999……所以我们用floor($d)舍去法舍去小数取整时,返回的是7而不是8。
永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
如果需要比较,一定要使用任意精度函数(如BCMath、GMP相关函数),如上片断三代码所示。更多BCMatch函数请参考这里。
String 字符串
字符串,我们之前在写第一个程序的时候,echo输出的就是字符串,可以用如下几种方式来表达一个字符串。
单引号
不解析里面的变量和特殊字符的转义序列,如下例子中的\t和$name都不会被解析。
/* 单引号 */
$name = '张三';
$str1 = '\t1. 他说:"我叫$name"。';
echo $str1;
echo "\n";
在Sublime Text 3 下执行结果如下:
\t1. 他说:"我叫$name"。
双引号
会解析变量和特殊字符的转义序列,\t被转成了制表符
/* 双引号 */
$str2 = "\t2. 他说:\"我叫$name\"。";
echo $str2;
echo "\n";
在Sublime Text 3 下执行结果如下:
2. 他说:"我叫张三"。
heredoc 语法结构
解析规则同双引号
/* Heredoc 多行字符串 */
$str3 = <<< EOT
3. 他说:"我叫$name"。
我说:"你就不要骗我了"。
\t他面色一囧。
EOT;
// EOT; 一定要放到最前面,不能有任何空格或者其它字符,“我说”前面的空白也会打出来。
echo $str3;
echo "\n";
在Sublime Text 3 下执行结果如下:
3. 他说:"我叫张三"。
我说:"你就不要骗我了"。
他面色一囧。
nowdoc 语法结构
解析规则同单引号
/* Heredoc 多行字符串 */
$str4 = <<<'EOT'
4. 他说:"我叫$name"。
我说:"你就不要骗我了"。
\t他面色一囧。
EOT;
// EOT; 一定要放到最前面,不能有任何空格或者其它字符
在Sublime Text 3 下执行结果如下:
4. 他说:"我叫$name"。
我说:"你就不要骗我了"。
\t他面色一囧。
字符串的连接
// 字符串连接
$a = "中国";
$ab = "美国";
$abc = "俄罗斯";
$combine1 = $a . $ab . $abc . '都是大国';
$combine2 = "{$a}{$ab}{$abc}都是大国";
$combine3 = sprintf("%s%s%s都是大国", $a, $ab, $abc);
echo $combine1;
echo "\n";
echo $combine2;
echo "\n";
echo $combine3;
echo "\n";
在Sublime Text 3 下执行结果如下:
中国美国俄罗斯都是大国
中国美国俄罗斯都是大国
中国美国俄罗斯都是大国
使用 {} 来解析复杂的情况
// 字符串连接
$a = "中国";
$ab = "美国";
$abc = "俄罗斯";
// 使用 {} 来解析复杂的情况
// echo "$abcdefd";
echo "{$ab}cdefd";
echo "\n";
$arr = [
'key1' => [
'key2' => 'name'
],
];
echo "5.他说:\"我叫${$arr['key1']['key2']}\"。";
echo "\n";
在Sublime Text 3 下执行结果如下:
美国cdefd
5.他说:"我叫张三"。
把字符串当成数组处理
第一位是0,第二位是1……
// 把字符串当成数组处理,第一位是0,第二位是1……
$str5 = 'xyzefg';
echo $str5[0], "\n"; // x
// echo $str5[6], "\n"; // 最大是5,6已经越界。PHP Notice: Uninitialized string offset:
在Sublime Text 3 下执行结果如下:
x
字符串转换为数值的情况
// 字符串转换为数值的情况
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE); // 以下代码会大量报错,暂时屏蔽一下 E_WARNING E_NOTICE 级别错误
$v1 = 1 + "10.5"; // float(11.5) "10.5"字符串,转化成了 10.5
$v2 = 1 + "-1.3e3"; // float(-1299) "-1.3e3"转成了数字-1.3e3,即-1300
$v3 = 1 + "b-1.3e3"; // int(1) 以字母开头的"b-1.3e3",会被转成0
$v4 = 1 + "b1"; // int(1) 以字母开头的"b1",会被转成0
$v5 = 1 + "1b10"; // int(2) 以数字开头的"1b10",会去除第一个字母及后面所有的内容,只保留1
$v6 = 4 + "10.2b100"; // float(14.2) 以数字开头的"10.2b100",会去除第一个字母及后面所有的内容,只保留10.2
$v7 = "10.0b " + 1; // float(11) 以数字开头的"10.0b ",只保留10.0
$v8 = "10.0b " + 1.0; // float(11) 以数字开头的"10.0b ",只保留10.0
var_dump($v1, $v2, $v3, $v4, $v5, $v6, $v7, $v8);
在Sublime Text 3 下执行结果如下:
float(11.5)
float(-1299)
int(1)
int(1)
int(2)
float(14.2)
float(11)
float(11)
字符串相关函数示例
更多字符串函数见这里
// 字符串相关函数示例
// 在PHP手册里有大量以 str 开头的函数
$str6 = 'Hello My name is Smith';
// 把 str6 里的小写 m 替换成 M
echo str_replace('m', 'M', $str6); // Hello My naMe is SMith
echo "\n";
// 把 str6 全部转成大写
echo strtoupper($str6); // HELLO MY NAME IS SMITH
echo "\n";
// 截取字符串
echo substr($str6, 0, 5); // Hello 从第0个字符开始,截取长度为5的字符
echo "\n";
echo substr($str6, 10, 2); // am 从第10个字符开始,截取长度为2的字符
echo "\n";
// 对于中文的处理
$str7 = '中国,中央之国。';
// 把 str7 里的 "中" 替换成 "美"
echo mb_ereg_replace('中', '美', $str7); // 美国,美央之国。
echo "\n";
// 把 str7 里的
echo mb_substr($str7, 3, 2); // 中央
echo "\n";
在Sublime Text 3 下执行结果如下:
Hello My naMe is SMith
HELLO MY NAME IS SMITH
Hello
am
美国,美央之国。
中央
Array 数组
PHP里的数组,相当于其它语言里的数组、列表、字典、集合、栈、队列。
数组有一维数组,二维数组,多维数组。
定义一个数组
// 老写法
$arr1 = array(1, 2, 3);
// 新写法。PHP5.4以后,用 [] 代替 array(),建议用 []
$arr2 = [1, 2, 3];
带 key 的数组
$arr2 实际上是有 key 的,相当于如下定义:
$arr2 = [
0 => 1,
1 => 2,
2 => 3,
];
上面最后一行的逗号可以没有,也可以有。但在多行模式下,保留最好,这样如果再多加一行的时候,会很方便。
key 可以是 int 或者 string。如果有相同的key,使用最后一个对应的值。
<?php
// 键名转换与覆盖
$arr3 = [
1 => "a",
"1" => "b", // 它也是1
1.5 => "c", // 只能是int或者string 1.5会转化成 1
true => "d", // 它也是1
];
var_dump($arr3);
在Sublime Text 3 下执行结果如下:
array(1) {
[1]=>
string(1) "d"
}
int 与 string 键名混合情况下,我们可以到看到a的键名是0,b的键名是1,因为有100是数字键名,所以c的键名就加1成了101了。
// int 与 string 键名混合
$arr4 = [
'a',
'name' => 'TFBOYS',
'age' => '16',
'b',
100 => '哈',
'c',
];
var_dump($arr4);
$arr5 = [
10 => 'a',
'b', // key 为 11 自动加 1
'c', // key 为 12
'd', // key 为 13
];
var_dump($arr5);
在Sublime Text 3 下执行结果如下:
array(6) {
[0]=>
string(1) "a"
["name"]=>
string(6) "TFBOYS"
["age"]=>
string(2) "16"
[1]=>
string(1) "b"
[100]=>
string(3) "哈"
[101]=>
string(1) "c"
}
array(4) {
[10]=>
string(1) "a"
[11]=>
string(1) "b"
[12]=>
string(1) "c"
[13]=>
string(1) "d"
}
访问数组单元
// 多维数组及访问数组单元
$arr6 = [
100 => 'today',
'name' => '中国人',
'country' => [
'china' => [
'province' => 'Shanghai',
],
],
];
echo $arr6[100] . "\n";
echo $arr6['name'] . "\n";
echo $arr6['country']['china']['province'] . "\n";
在Sublime Text 3 下执行结果如下:
today
中国人
Shanghai
新建、修改、删除数组
// 新建、修改、删除数组
$arr7 = [];
$arr7['a'] = 'aaa';
$arr7['b'] = 'bbb';
$arr7['c'] = 'ccc';
$arr7[] = 'ddd';
$arr7[] = 'eee';
var_dump($arr7);
// 修改 c 的值
$arr7['c'] = 'ccccc';
// 删除 ddd 和 bbb
unset($arr7[0], $arr7['b']);
var_dump($arr7);
在Sublime Text 3 下执行结果如下:
array(5) {
["a"]=>
string(3) "aaa"
["b"]=>
string(3) "bbb"
["c"]=>
string(3) "ccc"
[0]=>
string(3) "ddd"
[1]=>
string(3) "eee"
}
array(3) {
["a"]=>
string(3) "aaa"
["c"]=>
string(5) "ccccc"
[1]=>
string(3) "eee"
}
新建、遍历一维二维数组
// foreach 遍历一维数组
$arr8 = ['a', 'b', 'c', 'd'];
// $arr9 要存在,并且要为数组,先判断后使用,是一个好习惯
if (!empty($arr8) && is_array($arr8)) {
foreach ($arr8 as $v) {
echo $v;
}
}
echo "\n";
// foreach 遍历二维数组
$arr9 = [];
$arr9[1] = [ // 下标从 1 开始自增
'name' => '小明',
'score' => '98',
];
// 这也是添加一个元素的方式
$arr9[] = [
'name' => '小黄',
'score' => '99',
];
// array_push用于向一个数组尾部添加一个元素
array_push($arr9, [
'name' => '小红',
'score' => '100',
]);
var_dump($arr9);
// $arr9 要存在,并且要为数组,先判断后使用,是一个好习惯
if (!empty($arr9) && is_array($arr9)) {
foreach ($arr9 as $k => $v) { // $k 表示的是 键名
echo "第{$k}条,姓名:{$v['name']},成绩:{$v['score']}\n";
}
}
在Sublime Text 3 下执行结果如下:
abcd
array(3) {
[1]=>
array(2) {
["name"]=>
string(6) "小明"
["score"]=>
string(2) "98"
}
[2]=>
array(2) {
["name"]=>
string(6) "小黄"
["score"]=>
string(2) "99"
}
[3]=>
array(2) {
["name"]=>
string(6) "小红"
["score"]=>
string(3) "100"
}
}
第1条,姓名:小明,成绩:98
第2条,姓名:小黄,成绩:99
第3条,姓名:小红,成绩:100
数组函数
上面有is_array来判断是否是数组,array_push用于向一个数组尾部添加一个元素。下面演示ksort和sort用于排序数组。更多数组函数请参考这里
// 数组函数
$arr10 = [
'a' => '5',
'c' => '1',
'b' => '3',
];
ksort($arr10); // 按键名来进行排序
var_dump($arr10);
sort($arr10); // 按键值来进行排序
var_dump($arr10);
在Sublime Text 3 下执行结果如下:
array(3) {
["a"]=>
string(1) "5"
["b"]=>
string(1) "3"
["c"]=>
string(1) "1"
}
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "3"
[2]=>
string(1) "5"
}
数组的复制与引用
复制
$arr11 = [1, 2, 3];
$arr12 = $arr11;
$arr12[0] = 4;
var_dump($arr11, $arr12);
在命令行下执行结果如下,可以看到两个数组结果是不一样的。
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
array(3) {
[0]=>
int(4)
[1]=>
int(2)
[2]=>
int(3)
}
引用
// 引用
$arr13 = [5, 6 ,7];
$arr14 = &$arr13;
$arr14[0] = 8;
var_dump($arr13, $arr14);
在命令行下执行结果如下,可以看到引用的情况下两个数组结果一样
array(3) {
[0]=>
int(8)
[1]=>
int(6)
[2]=>
int(7)
}
array(3) {
[0]=>
int(8)
[1]=>
int(6)
[2]=>
int(7)
}
在 foreach 里引用
// 引用并修改值
$arr15 = [
[
'name' => '张三',
'score' => '99',
],
[
'name' => '李四',
'score' => '100',
]
];
foreach ($arr15 as &$v) {
$v['age'] = '16';
}
var_dump($arr15);
在命令行下执行结果如下,可以看到每个数组元素里均加上了一个age
array(2) {
[0]=>
array(3) {
["name"]=>
string(6) "张三"
["score"]=>
string(2) "99"
["age"]=>
string(2) "16"
}
[1]=>
&array(3) {
["name"]=>
string(6) "李四"
["score"]=>
string(3) "100"
["age"]=>
string(2) "16"
}
}
Object 对象
实有实例化的类都是对象。is_object可以判断一个变量是否是Object 对象,也可以用 (object)
来强制转成对象。
实例化的类
Class Human {
public function population()
{
echo "世界人口太多了\n";
}
}
$obj1 = new Human();
var_dump(is_object($obj1)); // bool(true)
var_dump($obj1); // object(Human)#1 (0) { }
在Sublime Text 3 下执行结果如下:
bool(true)
object(Human)#1 (0) {
}
数组转成对象
// 数组转成对象
$arr1 = [1, 2, 'a' => '333'];
var_dump($arr1);
$obj2 = (object) $arr1;
var_dump($obj2);
var_dump(is_object($obj2));
var_dump($obj2->a);
// 可以遍历 $obj2 的属性
foreach ($obj2 as $k => $v) {
var_dump($k .$v);
}
在Sublime Text 3 下执行结果如下:
array(3) {
[0]=>
int(1)
[1]=>
int(2)
["a"]=>
string(3) "333"
}
object(stdClass)#2 (3) {
[0]=>
int(1)
[1]=>
int(2)
["a"]=>
string(3) "333"
}
bool(true)
// foreach 遍历的结果
string(3) "333"
int(0)
int(1)
int(1)
int(2)
string(1) "a"
string(3) "333"
字符串转成对象
// 字符串转成对象时,会放在 scalar 标签下
$str1 = 'abcde';
$obj3 = (object) $str1;
var_dump($obj3);
var_dump($obj3->scalar);
在Sublime Text 3 下执行结果如下:
object(stdClass)#3 (1) {
["scalar"]=>
string(5) "abcde"
}
string(5) "abcde"
Callable / Callback(可调用)(回调类型)
在各种语言里,回调类型都是一种很常见的类型。可以在调用之前用is_callable来判断是否是可用的回调类型。call_user_func和call_user_func_array是较常见的两种调用方式。在使用PHP手册时,参数类型为 callable 的就要传递回调类型的变量。
<?php
/* example_13.php */
/* 这是一个类 */
Class Human {
public function population($populationNumber)
{
echo "世界人口太多了,目前有{$populationNumber}亿了\n";
}
}
$theHuman = new Human();
/* 这是一个匿名函数 */
$closure = function ($MyMoney, $yourMoney) {
echo "我有{$MyMoney}块,你有{$yourMoney}块\n";
}; /* 注意这里有一个 ; 号 */
/* 判断是否是一个可调用类型 */
var_dump(is_callable($closure));
var_dump(is_callable([$theHuman, 'population']));
/* 一种调用方式 */
call_user_func([$theHuman, 'population'], 72);
call_user_func($closure, '80', '120');
call_user_func_array($closure, ['100', '50']);
在Sublime Text 3 下执行结果如下:
bool(true)
bool(true)
世界人口太多了,目前有72亿了
我有80块,你有120块
我有100块,你有50块
Resource 资源类型
资源 resource 是一种特殊变量,保存了到外部资源的一个引用,比如打开文件、连接数据库、请求网络等。
<?php
/* example_12.php */
$handle = fopen('example_12.txt', 'ab');
var_dump(gettype($handle));
var_dump(is_resource($handle));
fclose($handle);
在Sublime Text 3 下执行结果如下:
string(8) "resource"
bool(true)
NULL(无类型)
表示一个变量没有值。有时候需要显式的设置一个变量是NULL,然后后期赋值。
- 可能直接被赋值为NULL
- 可能没有赋值
- 被 unset
<?php
/* example_14.php */
$a = NULL;
$b;
$c = [
'name' => '张三',
];
unset($c['name']);
var_dump(is_null($a));
var_dump(is_null($b));
var_dump(is_null($c['name']));
var_dump($a, $b, $c);
在Sublime Text 3 下执行结果如下:PHP Notice错误,说明变量没有定义。
bool(true)
Notice: Undefined variable: b in D:\xampp\htdocs\phpstudy\example_14.php on line 13
bool(true)
PHP Notice: Undefined variable: b in D:\xampp\htdocs\phpstudy\example_14.php on line 13
PHP Notice: Undefined index: name in D:\xampp\htdocs\phpstudy\example_14.php on line 14
Notice: Undefined index: name in D:\xampp\htdocs\phpstudy\example_14.php on line 14
bool(true)
PHP Notice: Undefined variable: b in D:\xampp\htdocs\phpstudy\example_14.php on line 16
Notice: Undefined variable: b in D:\xampp\htdocs\phpstudy\example_14.php on line 16
NULL
NULL
array(0) {
}
伪类型
伪类型(pseudo-types) 是 PHP 文档里用于标识参数可以使用的类型和值。 仅用于PHP手册及我们代码中注释部分。
mixed
mixed 说明一个参数可以接受多种不同的(但不一定是所有的)类型。
例如 gettype() 可以接受所有的 PHP 类型,str_replace() 可以接受字符串和数组。
gettype
(PHP 4, PHP 5, PHP 7)
gettype — 获取变量的类型
描述
string gettype ( mixed $var )
返回 PHP 变量的类型 var.
number
number 说明一个参数可以是 integer 或者 float。
/**
* 取钱
*
* @param number $amount 数额
*
*
* @return bool
*/
callback
本文档中在 PHP 5.4 引入 callable 类型之前使用 了 callback 伪类型。二者含义完全相同。 现在已经用callable类型替代
is_callable
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
is_callable — 检测参数是否为合法的可调用结构
说明
bool is_callable ( callable $name [, bool $syntax_only = false [, string &$callable_name ]] )
array|object
array|object 意思是参数既可以是 array 也可以是 object。
void
void 作为返回类型意味着函数的返回值是无用的。void 作为参数列表意味着函数不接受任何参数。
...
在函数原型中,$... 表示等等的意思。当一个函数可以接受任意个参数时使用此变量名。
var_dump
(PHP 4, PHP 5, PHP 7)
var_dump — 打印变量的相关信息
说明
void var_dump ( mixed $expression [, mixed $... ] )
课堂作业
检查大家学的是否认真的作业题,大家可以在不运行的情况下,明确的知道答案吗?
<?php
/* example_15.php */
error_reporting(E_ALL ^ E_NOTICE);
$a = false;
var_dump(is_null($a));
var_dump(isset($a));
var_dump(empty($a));
$a = null;
var_dump(is_null($a));
var_dump(isset($a));
var_dump(empty($a));
$a = '';
var_dump(is_null($a));
var_dump(isset($a));
var_dump(empty($a));
$a = 0;
var_dump(is_null($a));
var_dump(isset($a));
var_dump(empty($a));
$a = '0';
var_dump(is_null($a));
var_dump(isset($a));
var_dump(empty($a));
$a = 0.0;
var_dump(is_null($a));
var_dump(isset($a));
var_dump(empty($a));
$a = 0.5;
var_dump(is_null($a));
var_dump(isset($a));
var_dump(empty($a));
$a = [];
var_dump(is_null($a));
var_dump(isset($a));
var_dump(empty($a));
$b;
var_dump(is_null($b));
var_dump(isset($b));
var_dump(empty($b));