PHP部分数据类型(Boolean,Int,Float,String)总结
版权声明:以上内容大多来自PHP手册,我想摘抄下来最重要的部分,用作自己记忆
PHP的数据类型有:
Boolean,Integer,Float,String,Array,Object,Resource,NULL,Callback/Callable
1、Boolean类型(bool)
分为true和false
其中,有一些其他类型转为Boolean时会成为false:
- 布尔值 FALSE 本身
- 整型值 0(零)
- 浮点型值 0.0(零)
- 空字符串,以及字符串 “0”
- 不包括任何元素的数组
- 特殊类型 NULL(包括尚未赋值的变量)
从空标记生成的 SimpleXML 对象
但是,负数(或者非零值)会认为是true。
<?php $val = (bool)0; echo $val.”\n”; var_dump($val); $val =(bool)-1; var_dump($val);
输出结果:
echo 没有输出。
bool(false)
bool(true)
2、Integer 整数
主要是十进制数,当然也有二进制,八进制和十六进制。
下面是各种进制的表示方法:
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
$a = 0b11111111; // 二进制数字 (等于十进制 255)
2.1进制转换:
分别是十进制转二进制,十进制转十六进制,十进制转八进制。
ps:
二进制:Binary
八进制:Octal
十六进制:Hexadecimal
2.2数字字符串
$str = '19';
echo 2+$str;
echo $str+2;
输出为:21 21
说明数字字符串进行运算的时候会自动转为数字
2.3 整数溢出
整数的最大值和操作系统的位数有关系。
我是mac 64为系统,所以
var_dump( PHP_INT_MAX+1);
输出:float(9.2233720368548E+18)
PHP会溢出为浮点型,在Java中会变成负数的最大值。
3、Float 浮点数
所以永远不要相信浮点数结果精确到了最后一位,也永远不要直接比较两个浮点数是否相等。
以下为错误的做法:
if($float1==$float2){
//todo
}
而是:
设定一个精度值,来表示浮点数大致相等
<?php $a = 1.23456789; $b = 1.23456780; $epsilon = 0.00001; if(abs($a-$b) < $epsilon) { echo "true"; } ?>
4、String
一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。
ps:我没懂这个什么意思,字符串里可以写中文啊。然后实验了一下:
$zh ="你";
$en ="h";
echo strlen($zh)."----".strlen($en);
输出:3—-1,可以发现中文长度为3。
想要获得中文字符串的真实长度的话可以用mb_strlen($str)
单引号和双引号都可以表示字符串,但是双引号中可以有转义字符(\n 换行,\t 一段空格),还可以进行变量解析(就是字符串里的$变量名可以解析成对应的字符串)
还有就是Heredoc 结构
(第三种表达字符串的方法是用 heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。)个人感觉第三个不常用,太麻烦了,个人不喜欢用,不常见啊。有兴趣的可以看一下这个链接点这里。
4.1 变量解析
一般变量的解析:
$name = 'php';
echo "My name is $name";
类似的,一个 array 索引或一个 object 属性也可被解析。
类的非静态属性的解析:
class Test{
var $id=1314;
public function display(){
echo "function display()";
}
}
$obj = new Test();
echo "$obj->id";
输出:1314
不能解析function:
class Test{
var $id=1314;
public function display(){
echo "function display()";
}
}
$obj = new Test();
echo "$obj->display()";
错误提示是:
PHP Notice: Undefined property: Test::$display in Type.php on line 36
意思是display是一个未声明的属性,所以是属性才可以哟!
4.2 字符串的操作
字符串分割
$str =”你好,PHP”;
$res =explode(“,”,$str);
var_dump($res);
上面的逗号为中文的逗号 ,
字符串替换
$str =”你好,PHP”;
$res =str_replace(“,”,”—“,$str);
var_dump($res);
4.3 字符串转换问题
数字转字符
不要想像在 C 语言中的那样,通过将一个字符转换成整数以得到其代码。使用函数 ord() 和 chr() 实现 ASCII 码和字符间的转换。
里面灰色字体是phpstorm的提示
分别输出:
a—A 97—65
还没有评论,来说两句吧...