PHP部分数据类型(Boolean,Int,Float,String)总结

骑猪看日落 2022-06-02 04:43 262阅读 0赞

版权声明:以上内容大多来自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 没有输出。

  1. bool(false)
  2. bool(true)

2、Integer 整数

主要是十进制数,当然也有二进制,八进制和十六进制。
下面是各种进制的表示方法:

  1. $a = -123; // 负数
  2. $a = 0123; // 八进制数 (等于十进制 83)
  3. $a = 0x1A; // 十六进制数 (等于十进制 26)
  4. $a = 0b11111111; // 二进制数字 (等于十进制 255)
2.1进制转换:

这里写图片描述
分别是十进制转二进制,十进制转十六进制,十进制转八进制。
ps:
二进制:Binary
八进制:Octal
十六进制:Hexadecimal

2.2数字字符串
  1. $str = '19';
  2. echo 2+$str;
  3. echo $str+2;

输出为:21 21
说明数字字符串进行运算的时候会自动转为数字

2.3 整数溢出

整数的最大值和操作系统的位数有关系。
我是mac 64为系统,所以
这里写图片描述

  1. var_dump( PHP_INT_MAX+1);

输出:float(9.2233720368548E+18)
PHP会溢出为浮点型,在Java中会变成负数的最大值。

3、Float 浮点数

所以永远不要相信浮点数结果精确到了最后一位,也永远不要直接比较两个浮点数是否相等。
以下为错误的做法:

  1. if($float1==$float2){
  2. //todo
  3. }

而是:
设定一个精度值,来表示浮点数大致相等

  1. <?php $a = 1.23456789; $b = 1.23456780; $epsilon = 0.00001; if(abs($a-$b) < $epsilon) { echo "true"; } ?>

4、String

一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。
ps:我没懂这个什么意思,字符串里可以写中文啊。然后实验了一下:

  1. $zh ="你";
  2. $en ="h";
  3. echo strlen($zh)."----".strlen($en);

输出:3—-1,可以发现中文长度为3。
想要获得中文字符串的真实长度的话可以用mb_strlen($str)

单引号和双引号都可以表示字符串,但是双引号中可以有转义字符(\n 换行,\t 一段空格),还可以进行变量解析(就是字符串里的$变量名可以解析成对应的字符串)
还有就是Heredoc 结构
(第三种表达字符串的方法是用 heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。)个人感觉第三个不常用,太麻烦了,个人不喜欢用,不常见啊。有兴趣的可以看一下这个链接点这里。

4.1 变量解析

一般变量的解析:

  1. $name = 'php';
  2. echo "My name is $name";

类似的,一个 array 索引或一个 object 属性也可被解析。
类的非静态属性的解析:

  1. class Test{
  2. var $id=1314;
  3. public function display(){
  4. echo "function display()";
  5. }
  6. }
  7. $obj = new Test();
  8. echo "$obj->id";

输出:1314
不能解析function:

  1. class Test{
  2. var $id=1314;
  3. public function display(){
  4. echo "function display()";
  5. }
  6. }
  7. $obj = new Test();
  8. 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

发表评论

表情:
评论列表 (有 0 条评论,262人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PHP数据类型转换

    指的是将数据(变量)的值转换成目标数据类型。 PHP中有两种数据类型转换方式:自动转换,强制转换 自动转换:系统根据操作所需要的类型将变量的值进行对应类型的转换 自动

    相关 PHP数据类型

    数据类型是针对各种(变量)值而言,而不是针对变量本身。 PHP有三大数据类型:标量,复合,特殊 标量数据类型(简单数据类型)   整型:int或者integer,整数