美文网首页
PHP数据类型

PHP数据类型

作者: 码一 | 来源:发表于2022-05-26 12:53 被阅读0次

    本文是复习所写,并不会涵盖一些基础知识点

    PHP中总共是4中标量类型、4种复合类型、2种特殊类型

    标量类型

    1. bool

    2. int

      GMP, GNU Multiple Precision, 用于处理任意长度整数

      BC Math, 任意精度数学, 提供了加、减、乘、除、余等操作函数

    3. float

      <?php
      $a = 1.23;
      $b = 1.2e3;
      $c = 7E-10;
      $d = 1_324.33; // 从PHP7.4.0开始支持
      

      浮点运算可能会产生NAN, 不代表任何值,所以不能跟任何值比较,包括自身。基于此PHP专门提供了is_nan()函数来检查是否是NAN

      浮点数比较得话有两种方式:

      <?php
      // 第一种,使用BC Math函数 推荐
      $a = 231.222;
      $b = 231.22222;
      bccomp($a, $b);
      
      // 第二种,与机器极小值比较
      $epsilon = 0.0001;
      if (abs($a-$b) < $epsilon) {
          echo '两数相等';
      }
      
    4. string

      <?php
      /* 
       * 单引号
       * 最纯净的string,不会解析变量与特殊字符
       * ' \ 在单引号string中有特殊作用,要想输出这两个字符需要在前面用 \ 转义一下
       */
      $a = '字符串';
      $b = '字\'符串';
      $c = '字符\\串';
      
      /* 
       * 双引号
       * 最重要的就是会解析变量
       */
      $d = "这是双引号{$a}";
      
      /*
       * Heredoc结构
       * 以<<<加标识符换行开始,换行以标识符结束.开头标识符双单引号可省略
       * 规则跟双引号字符串一致
       */
      $g = 'c';
      $e = <<<"Eof"
      这是Heredoc{$a}
      这是Heredoc${$g}
      Eof;
      
      /*
       * Nowdoc结构
       * 以<<<加标识符换行开始,换行以标识符结束.开头标识符必需使用单引号
       * 规则跟单引号字符串一致
       */
      $f = <<<'Eof'
      这是Nowdoc字符串
      Eof;
      

      PHP并没有明确指明string的编码,因此string会被按照源码文件的编码来编码, 推荐使用UTF8-BOM编码

      对于多字节字符串需要使用多字节字符串函数来处理,即mb_开头的函数

      字符串可以通过下标来操作

    复合类型

    1. array

      PHP中的array实际上是一个有序映射. 它可以被视为数组、列表(向量)、哈希表、字典、集合、堆栈、队列等

      array_merge($arr1, $arr2)同名字符串key arr2将会覆盖arr1;$arr1+$arr2同名字符串key arr1覆盖arr2

      纯数字key数组合并会重建索引,字符串数字混合key则不会

    2. object

    3. callable

    4. iterable <sub style="color: red;">PHP7.1 新增

      指的是array或实现了Traversable接口的对象, 标识是可以使用foreach迭代

      使用array、实现Traversable接口、生成器都可创建可迭代对象

    特殊类型

    1. resource
    2. null

    PHP是动态类型语言,所以变量类型是在运行时根据上下文决定的。当然也可以通过显示/隐式的方式转换数据类型

    相关文章

      网友评论

          本文标题:PHP数据类型

          本文链接:https://www.haomeiwen.com/subject/lgmuprtx.html