PHP基础知识(一)
2021-02-20 16:19
标签:精度 方便 数学函数 解释 info 函数 开头 类型 redo 要明确地将一个值转换成boolean,用(bool)或者(boolean)来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个boolean参数时,该值会被 自动转换。 当转换为boolean时,以下值被认为时FALSE: 1.布尔值FALSE本身 2.整型值0 3.浮点型值0.0 4.空字符串,以及字符串"0" 5.不包括任何元素的数组 6.不包括任何成员变量的对象(仅PHP4.0适用) 7.特殊类型NULL 8.从空标记生成的SimpleXML对象 所有其它值都被认为时TRUE(包括任何资源) 整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(-或者+)。二进制表达的Integer自PHP5.4.0起可用。要使用八进制表达,数字前必须加上0,要使用十六进制表达,数字前面必须加上0x,要使用二进制进行表达,数字前必须加上0b。如果给定的一个数超过了integer范围,将会被解释为float。同样如果执行的运算结果超出了integer范围,也会返回float。 整型的字长和平台有关,尽管通常最大值约为二十亿(32位有符号)。64位平台下的最大值通常是大约9E18。PHP不支持无符号整数。Integer值的字长可以用常量PHP_INT_SIZE表示,自PHP4.4.0和PHP5.0.5后,最大值可以用常量PHP_INT_MAX来表示。 要明确地将一个值转换为Integer,用(int)或者(integer)强制转换。不过大多数下都不需要强制转换,因为当运算符,函数或流程控制需要一个integer参数时,值会自动转换。还可以通过函数intval()来将一个值转换成整型。 测试结果: 永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者gmp函数。如上述警告信息所言,由于内部表达式地原因,比较两个浮点数是否相等是有问题的。不过还是有迂回的办法来比较浮点数值的。 要测试浮点数是否相等,要使用一个仅仅比该数值大一丁点的最小误差值。该值也被称为机器极小值(epsilon)或最小单元取整数,是计算所能接受的最小的差别值。 $a和$b在小数点后五位内精度是相等的。 测试结果: 某些数学运算会产生一个由常量NaN所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值,任何拿此值与其它任何值进行的松散或严格比较的结果都是False。由于NaN代表任何不同值,不应该拿NaN去和其它值进行比较,包括其自身,应用is_nan()来检查。 定义一个字符串的最简单的方法是用单引号把它包围起来(‘)。 如果字符串是包围在双引号(")中,PHP不仅可以解析变量还可以对一些特殊的字符进行解析: 第三种表达式字符串的方法是用heredoc语法结构:标识符Boolean类型
Integer类型
Float浮点型
NaN
String字符串
单引号(不能解析变量)
双引号
Heredoc结构(用于输出一大段HTML代码,也可以解析变量)
Heredoc结构不能用来初始化类的属性。自PHP5.3起,此限制仅对Heredoc包含变量时有效。
测试结果:
Nowdoc结构(类似于单引号,不能解析变量)
就像Heredoc结构类似于双引号字符串,Nowdoc结构是类似于单引号字符串的。Nowdoc结构很像Heredoc结构,但是Nowdoc中不进行解析操作。这种结构就很适合用于嵌入PHP代码或其它大段文本而无需对其中的特殊字符进行转义。
一个Nowdoc结构也用和Heredoc结构一样的标记Nowdoc结构可以用在任意的静态数据环境中,最典型的示例是用来初始化类的属性或常量。
测试结果:
变量解析
当字符串用双引号或Heredoc结构定义时,其中的变量将会被解析。这里共有两种语法规则:一种简单规则,一种复杂规则。简单的语法规则是最常用和最方便的,它可以用最少的代码在一个string中嵌入一个变量,一个array的值,或一个object的属性;复杂规则语法的显著标记是用花括号包围表达式。
PHP基础知识(一)
标签:精度 方便 数学函数 解释 info 函数 开头 类型 redo
原文地址:https://www.cnblogs.com/xiaojiang0414/p/12916142.html