2.3PHP之浮点型和字符串
下一篇: 2.4PHP复合数据类型:数组和对象
Float 浮点型
浮点型(也叫浮点数 float,双精度数 double 或实数 real)。浮点数据类型可以用来存储数字,也可以保存小数。它提供的精度比整数大得多。在32位操作系统中,它的有效范围是1.7E-308——1.7E+308。在php4.0以前的版本,浮点型被标识为double,也叫做双精度浮点数。两张没有区别。
浮点数默认有下面两种书写格式:
3.14 -99.3
还有一种是用科科学记数法表示:
1.2E2 //即120 44.42E-3 //即0.04442
可以用以下任一语法定义:
<?php $a = 1.234 ; $b = 1.2e3 ;//1.2*10^3即1200 $c = 7E-10 ;//0.0000000007 ?>
用正则表达式表示浮点型: LNUM [0-9]+ DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*) EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM}) 其中"+"代表出现前面的数一次或多次,"*"代表出现前面的数0次或多次。
注意:浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。
所以使用浮点数进行加减比较操作时好格外小心,防止数据丢失或者溢出。例如:floor((0.1+0.7)*10)值是7,因为0.1+0.7的值可能是7.999999999….也就是说浮点型的数值只是一个近似值,所以尽量不要在浮点型数值之间比较大小,因为最后的结果经常是不准确的。
String 字符串
一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode。
字符串是连续的字符序列,由数字、字母和符合组成。其中有3种定义字符串的方式,分别是单引号(')、双引号(")和界定符(<<<)
其中用的最多的是单引号和双引号的定义方式。定义格式如下:
<?php $a = "abc123cd"; $b = 'adf3233#'; $c = "123"; echo "ccc$c"; //输出ccc123 echo 'ccc$c'; //输出123$a ?>
单引号和双引号的不同之处在于,双引号包含的变量会自动被替换成实际数值,而单引号中包含的变量按普通字符串输出。所以,当使用单引号表示字符串时,如果字符串里面要表达一个单引号自身,需要在她前面加个反斜线(\)来转义。要表达一个反斜线自身,则用两个反斜线(\\)。当使用双引号表示字符串时,还要注意“"”、"$"等字符的使用。这些特殊字符都要通过转义符"\"来显示。
<?php $a = 12; echo '23ff\'';//输出23ff' echo "123\"\\";//输出123"\ echo "123\$a";//输出123$a
界定符<<<
界定符(<<<)是从php4.0开始支持的。在使用时后接一个标识符,然后是字符串,最后是同样的标识符字符串。界定符的格式如下:
$string = <<<str 你要输出的内容 str;
注意:str标识符可以根据你的需要进行命名,标识符的命名:只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。要注意的是结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或制表符。起始标识符的左侧是可以有空格的。
界定符对文本的处理,和双引号一样,即\r\n\t,变量,等,能解析出来.
到了5.3.0之后, 又新增了nowdoc方式。格式如下:
$str = <<<'cont' 又一字符串 cont
与界定符区别的是起始标识符用单引号括起来,这样,大段文本的解析,就和单引号一样的效果. 不转义 \n \r \t,变量等等
下面看个例子:
<?php echo <<<str 123\n456 str; ?> 上面输出: 123 456
<?php echo <<<'str' 123\n456 str; ?> 上面输出: 123\n456
存取和修改字符串中的字符
string 中的字符可以通过一个从0开始的下标,用类似数组结构中的方括号包含对应的数字来访问和修改,比如 $str[42],也可用花括号访问,比如 $str{42} 。举个例子:
<?php $str = "123abc321"; //输出3,字符串第一位用0表示,第二位用1表示 以此类推 echo $str{2}."</br>"; $str{2} = 4; echo $str; //输出124abc321
注意:用超出字符串长度的下标写入将会拉长该字符串并以空格填充。非整数类型下标会被转换成整数。
非法下标类型会产生一个 E_NOTICE 级别错误。用负数下标写入字符串时会产生一个 E_NOTICE 级别错误,用负数下标读取字符串时返回空字符串。写入时只用到了赋值字符串的第一个字符。用空字符串赋值则赋给的值是 NULL 字符。
下一篇: 2.4PHP复合数据类型:数组和对象