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

相关文章
相关标签/搜索