php学习----数据类型2

时间:2020-12-21 00:45:20

Boolean 布尔类型

这是最简单的类型。boolean 表达了真值,可以为 TRUEFALSE

要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。

当转换为 boolean 时,以下值被认为是 FALSE

Warning: -1和其它非零值(不论正负)一样,被认为是 TRUE

exm:

<?php
var_dump((bool) "");       // bool(false)
var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);       // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
var_dump((bool) "false");   // bool(true)
?>

Integer 整型

integer 是集合 ? = {..., -2, -1, 0, 1, 2, ...} 中的某个数。

整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。

二进制表达的 integer 自 PHP 5.4.0 起可用。

要使用八进制表达,数字前必须加上 0(零)。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b

​ PHP 不支持无符号的 integerInteger 值的字长可以用常量 PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 来表示,最小值可以在 PHP 7.0.0 及以后的版本中用常量 PHP_INT_MIN 表示。

​ PHP 中没有整除的运算符。1/2 产生出 float 0.5。 值可以舍弃小数部分,强制转换为 integer,或者使用 round() 函数可以更好地进行四舍五入。

[round ]  对浮点数进行四舍五入

<?php
var_dump(25/7);         // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>

要明确地将一个值转换为 integer,用 (int)(integer) 强制转换。不过大多数情况下都不需要强制转换,因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换。还可以通过函数 intval() 来将一个值转换成整型。

resource 转换成 integer 时, 结果会是 PHP 运行时为 resource 分配的唯一资源号。

Float 浮点型

浮点型(也叫浮点数 float,双精度数 double 或实数 real)

​ 永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。 由于内部表达方式的原因,比较两个浮点数是否相等是有问题的。不过还是有迂回的方法来比较浮点数值的。

要测试浮点数是否相等,要使用一个仅比该数值大一丁点的最小误差值。该值也被称为机器极小值(epsilon)或最小单元取整数,是计算中所能接受的最小的差别值。 a 和 b 在小数点后五位精度内都是相等的。

<?php
$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;

if(abs($a-$b) < $epsilon) {
  echo "true";
}
?>

NaN

某些数学运算会产生一个由常量 NAN 所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值(除了 TRUE)进行的松散或严格比较的结果都是 FALSE

由于 NAN 代表着任何不同值,不应拿 NAN 去和其它值进行比较,包括其自身,应该用 is_nan() 来检查。

is_nan

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

is_nan — 判断是否为合法数值

​ bool is_nan ( float $val )

如果 val 不是一个数字(not a number)返回 TRUE,否则返回 FALSE

Example #1 is_nan() 例子

<?php
// Invalid calculation, will return a
// NaN value
$nan = acos(8);

var_dump($nan, is_nan($nan));
?>

以上例程会输出:

float(NAN)
bool(true)

String 字符串

一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode

1、单引号

​ 定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ')。

​ 要表达一个单引号自身,需在它的前面加个反斜线(*)来转义。要表达一个反斜线自身,则用两个反斜线(\*)。其它任何方式的反斜线都会被当成反斜线本身:也就是说如果想使用其它转义序列例如 \r 或者 \n,并不代表任何特殊含义,就单纯是这两个字符本身。

Note: 不像双引号heredoc 语法结构,在单引号字符串中的变量和特殊字符的转义序列将不会被替换。

2、双引号

​ 如果字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析:

序列 含义
\n 换行(ASCII 字符集中的 LF 或 0x0A (10))
\r 回车(ASCII 字符集中的 CR 或 0x0D (13))
\t 水平制表符(ASCII 字符集中的 HT 或 0x09 (9))
\v 垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起)
\e Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起)
\f 换页(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起)
\ 反斜线
$ 美元标记
\" 双引号
[0-7]{1,3} 符合该正则表达式序列的是一个以八进制方式来表达的字符
\x[0-9A-Fa-f]{1,2} 符合该正则表达式序列的是一个以十六进制方式来表达的字符

和单引号字符串一样,转义任何其它字符都会导致反斜线被显示出来。PHP 5.1.1 以前, \{$var}中的反斜线还不会被显示出来。

​ 用双引号定义的字符串最重要的特征是变量会被解析

​ 直接把 arrayobjectresource 转换成 string 不会得到除了其类型之外的任何有用信息。可以使用函数 print_r()var_dump() 列出这些类型的内容。

3、Heredoc结构和Nowdoc结构参考php文档

变量解析

​ 当字符串用双引号或 heredoc 结构定义时,其中的变量将会被解析。

​ 这里共有两种语法规则:一种简单规则,一种复杂规则。简单的语法规则是最常用和最方便的,它可以用最少的代码在一个 string 中嵌入一个变量,一个 array 的值,或一个 object 的属性。

​ 复杂规则语法的显著标记是用花括号包围的表达式。

php中ascll与字符的转换

ord

(PHP 4, PHP 5, PHP 7)

ord — 返回字符的 ASCII 码值

说明

int ord ( string $string )

返回字符串 string 第一个字符的 ASCII 码值。

chr

(PHP 4, PHP 5, PHP 7)

chr — 返回指定的字符

说明

string chr ( int $ascii )

返回相对应于 ascii 所指定的单个字符。

数组

可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value)对。

array(  key =>  value
    , ...
    )
// 键(key)可是是一个整数 integer 或字符串 string
// 值(value)可以是任意类型的值

​ 最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中,例如常用 array(1, 2) 而不是 array(1, 2, )。对多行数组定义通常保留最后一个逗号,这样要添加一个新单元时更方便。 key 可以是 integer 或者 string。value 可以是任意类型。

​ 应该始终在用字符串表示的数组索引上加上引号。例如用 $foo['bar'] 而不是 $foo[bar]

​ 这并不意味着总是给键名加上引号。用不着给键名为常量变量的加上引号,否则会使 PHP 不能解析它们。

魔术常量

__ LINE __ 文件当中的行号

__ FILE __ 文件的完整路径和文件名

__ FUNCTION __ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

__ CLASS__ 类的名称(PHP 4.3.0 新加)自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

__ METHOD __ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。