0

2.3PHP之浮点型和字符串

Posted by 撒得一地 on 2015年9月28日 in PHP入门教程

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 字符。 

标签:, ,

上一篇:

下一篇:

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

0 + 4 = ?

网站地图|XML地图

Copyright © 2015-2018 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.