教程 > PHP教程 > PHP 基础 阅读:70

PHP 数据类型

数据类型


PHP 支持 10 种原始数据类型。

四种标量类型:

  • bool(布尔型)
  • int(整型)
  • float(浮点型,也称作 double)
  • string(字符串)

四种复合类型:

  • array(数组)
  • object(对象)
  • callable(可调用)
  • iterable(可迭代)

最后是两种特殊类型:

  • resource(资源)
  • NULL(无类型)

变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的上下文在运行时决定的。

整型

在 PHP 中,整型变量称为 integer 或 int 类型,用来表示一个整数,整型的规则如下所示:

  • 整数必须至少有一个数字 (0-9)
  • 整数不能包含逗号或空格
  • 整数是没有小数点的
  • 整数可以是正数或负数

整型的取值范围必须介于 -2E31 到 2E31 之间,可以用三种格式来表示,即十进制、十六进制(以 0x 为前缀)和八进制(以 0 为前缀)。

示例

在以下实例中我们将测试不同类型的整型数字。

PHP var_dump() 函数返回变量的数据类型和值:

<?php 
$x = 5985;
var_dump($x);
echo "<br>"; 
$x = -345; // 负数 
var_dump($x);
echo "<br>"; 
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>

运行上面的代码,结果如下:

int(5985)
int(-345)
int(140)
int(39)

注意,在 PHP7 版本中,含有十六进制字符的字符串不再被视为数字,而是当作普通的字符串。

示例

<?php
    var_dump("0x123" == "291");
    echo "<br/>";
    var_dump(is_numeric("0x123"));
    echo "<br/>";
    var_dump("0xe" + "0x1");
?>

运行上面的代码,在 PHP5 中的输出结果如下:

bool(true)
bool(true)
int(15)

在 PHP7 中的输出结果如下:

bool(false)
bool(false)
int(0)

浮点型

浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义:

<?php
$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;
$d = 1_234.567; // 从 PHP 7.4.0 开始支持
?>

浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)。


字符串

一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。

在 32 位版本中,string 最大可以达到 2GB

在 PHP 中,定义字符串有三种方式,分别是单引号方式、双引号方式、Heredoc 方式。

示例

<?php
    //双引号方式声明字符串
    $str1 = "迹忆客";  
    //单引号方式声明字符串
    $str2 = 'PHP 教程';      
    //Heredoc 方式声明字符串
    $str3 = <<<EOF
    url:
    https://www.jiyik.com/w/YgDt38632
EOF;
    echo $str1."<br>".$str2."<br>".$str3;
?>

运行结果如下

迹忆客
PHP 教程
url: https://www.jiyik.com/w/YgDt38632

布尔型

布尔型只有两种值,分别是 TRUE 和 FALSE(不区分大小写),意为逻辑真和逻辑假。

示例

<?php
    $x = True;
    $y = faLsE;
    var_dump($x, $y);
?>

运行结果如下:

bool(true) bool(false)

数组

数组是一组数据的集合,是将数据按照一定规则组织起来形成的一个整体。数组的本质是存储管理和操作一组变量。按照数组的维度划分,可以有一维数组、二维数组和多维数组。我们可以使用 array() 函数来创建数组。

示例

<?php
    $arr = array('website' => '迹忆客', 'url' => 'https://www.jiyik.com/');
    echo "<pre>";   // <pre> 是一个 HTML 标签,用来格式化输出内容
    var_dump($arr);
?>

运行结果如下:

array(2) {
  ["website"]=>
  string(16) "迹忆客"
  ["url"]=>
  string(23) "https://www.jiyik.com/"
}

在接下来的章节中你将学到更多关于数组的知识。


对象

对象数据类型也可以用于存储数据。

在 PHP 中,对象必须声明。

首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。

然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:

示例

<?php
class Car
{
    var $color;
    function Car($color="green") {
      $this->color = $color;
    }
    function what_color() {
      return $this->color;
    }
}

function print_vars($obj) {
   foreach (get_object_vars($obj) as $prop => $val) {
     echo "    $prop = $val
";
   }
}

// instantiate one object
$herbie = new Car("white");

// show herbie properties
echo "herbie: Properties
";
print_vars($herbie);

?>

运行结果如下

herbie: Properties color = white

以上实例中PHP关键字this就是指向当前对象实例的指针,不指向任何其他对象或类。

你将会在接下来的章节中学会更多关于对象的知识。


NULL

NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。

NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。

可以通过设置变量值为 NULL 来清空变量数据:

示例

<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>

资源

资源(Resource)在 PHP 中同样是一种特殊的数据类型。它主要描述一个 PHP 的扩展资源,例如一个数据库查询(Query)、一个打开的文件句柄(fopen)或一个数据库连接(Database Connection)以及字符流(stream)等扩展类型。

但是我们并不能直接操作这个变量类型,只能通过专门的函数来使用。

如果上面所说的某一种情况出现时,例如使用 fopen 函数打开一个本地文件时

示例

<?php
    header("content-type:text/html;charset=utf-8");//设置编码,解决中文乱码
    $file = fopen("test.txt", "rw");//打开test.txt文件
    var_dump($file);
?>

运行结果如下:

resource(3) of type (stream)

资源是 PHP 提供的较强特性之一,它可以在 PHP 脚本中做自定义的扩展,类似于C语言结构中的引用,它的所有属性都是私有的,大家可以暂时将其理解为面向对象中的一个实例化对象。有关资源类型我们后面还会详细介绍。

查看笔记

扫码一下
查看教程更方便