2019.3.15 Blazar 实验楼
* 实验环境
PHP 7.2
Ubuntu 14.04
* 数据类型
PHP 的四种标量数据类型,分别是boolean(布尔型)、integer(整型)、float(浮点型,也称作 double)、string(字符串)。然后介绍了字符串的 4 中定义方式,单引号,双引号,Heredoc 和 Nowdoc。
-
PHP 支持 8 种原始数据类型。
四种标量类型:
- boolean(布尔型)
- integer(整型)
- float(浮点型,也称作 double)
- string(字符串)
两种复合类型:
- array(数组)
- object(对象)
最后是两种特殊类型:
- resource(资源)
- NULL(无类型)
<?php
$a = TRUE;
$b = "foo";
$c = 0.1;
$d = 12;
if (is_string($b)) {
echo "$b 是字符串".PHP_EOL;
}
if (is_int($c)) {
echo "$c 是整型".PHP_EOL;
}
var_dump($a);
var_dump($b);
echo gettype($c).PHP_EOL;
echo gettype($d);
执行
$ php test.php
-
Boolean 布尔类型
布尔类型表达了真值,可以为 TRUE 或 FALSE,不区分大小写。
<?php $a = True; $b = False; var_dump($a);// bool(true) var_dump($b);// bool(false)
运算符返回 boolean 类型的结果:
<?php
// == 是一个操作符,它检测两个变量值是否相等,并返回一个布尔值
if ($a == "say_hello") {
echo "Hello World";
}
// $b 的值是否为 true:
if ($res) {
echo "This is true";
}
- ** 注意**当下列情况转换为 Boolean 时,其值为 FALSE
- 布尔值 FALSE 本身
- 整型值 0(零)
- 浮点型值 0.0(零)
- 空字符串,以及字符串 “0”
- 不包括任何元素的数组
- 特殊类型 NULL(包括尚未赋值的变量)
- 从空标记生成的 SimpleXML 对象
-
Integer 整型
- 整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。整数溢出
- 如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了 integer 范围,也会返回 float。
<?php
$a = 123445566;
$b = 9223372036854775807;
$c = 9223372036854775808;
$d = 50000000000000 * 1000000;
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
执行 php test.php
( 更改了部分数字)
-
Float 浮点型
- 浮点型(也叫浮点数 float,双精度数 double 或实数 real)
- 浮点数的字长和平台相关,通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)
-
String 字符串类型
一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节,PHP 中有 4 中表达方式:
1 . 单引号
单引号内特殊字符和变量不会被解析(类似于字符串直接打印
<?php $a = 'Hello'; echo '$a \n World';//$a \n World
2 . 双引号
双引号内的特殊字符和变量会被解析。
```php
<?php
$a = 'Hello';
/**
* Hello
* php World
*/
echo "$a \nphpWorld";
3 . Heredoc
Heredoc 类似与双引号,内部转义字符和变量可以被解析,句法结构为
<<<EOT
字符串
EOT;
其中 EOT
为标识符,可以自定义,但是首尾标识符必须相同。 开始标识符 EOT 后需换行,结束标识符 EOT 必须独占一行,且前面不许有空格。
<?php
$a ='Hello' ;
echo <<<EOT
$a Hello
EOT;
4 . Nowdoc
Nowdoc 类似于单引号,无法解析转移字符和变量。句法结构类似 Heredoc,但是需要在开始标识符加上单引号。
<?php
$a ='Hello' ;
echo <<<'EOD'//和 Heredoc 不同点
$a Hello
EOD;
编辑 test.php
<?php
$a = 'Hello';
$b = '$a World';
$c = "ShiYanLou";
$c = <<<EOT
$a \n World
EOT;
$d = <<<'EOT'
$a \n $c
EOT;
var_dump($b);
var_dump($c);
var_dump($d);
执行 php test.php