数据类型
学习任何一门编程语言都需要将其所具有的数据类型学透彻。当然,对于PHP也一样。只有弄明白了,今后才能在编程的道路上顺风顺水。
PHP一共支持八种数据类型,其中四种标量类型,即:
- boolean 布尔型
- Integer 整型
- Float/double 浮点型
- String 字符串型
两种复合类型,即:
- Array 数组
- Object 对象
两种特殊类型,即:
- Resource 资源
- Null 空值
下面我们来一一介绍。
标量数据类型
布尔型(boolean)
布尔型只有两个值,要么false要么true。它是PHP中较为常用的数据类型之一,常用来作为条件或分支判断又或是返回值。不过由于PHP是弱类型语言的特性,我们在对布尔型变量进行判断时需要注意,其他标量类型的空值或0值都会被认定为false。
例:
<?php
//声明一个boolean类型变量
$bool = false;
var_dump($bool);
//声明一个空字符串
$str = "";
var_dump($str == $bool);
//声明一个值为0的整型
$num = 0;
var_dump($num == $bool);
//声明一个空数组
$arr = array();
var_dump($arr == $bool);
运行结果:
根据程序运行结果我们可以看出,在将布尔型的false值与其他标量数据类型的空值进行松散比较时,PHP会认定它们是相等的。
注意:var_dump()函数是PHP中内置的打印输出变量或表达式的调试函数。在今后日常开发中时常会用到,关于它的具体用法后续会做简单介绍。
整型
整型数据类型只能包含整数,在32位和64位的操作系统中它们的有效数值范围会有不同。
例:
<?php
// 在64位系统下
$a = PHP_INT_MAX;
$b = PHP_INT_MIN;
var_dump($a,$b);
运行结果:
在32位系统下,有效数值范围是 -2147483648~2147483647
浮点型
浮点型既可以存储整数,也可以存储小数。
例:
<?php
// 在64位系统下
$a = PHP_INT_MAX;
$b = PHP_INT_MIN;
$c = PHP_FLOAT_MAX;
$d = PHP_FLOAT_MIN;
var_dump($a, $b,$c,$d);
运行结果:
字符串型
字符串型是一个连续的字符序列,它可以包含字符,整数,浮点数以及符号等等。字符串中的每个字符只占一个字节。对于字符串的声明,可以由单引号,双引号或定界符(<<<)来完成。
例:
<?php
$str1 = '公众号程序员菜菜';
$str2 = "公众号程序员菜菜";
$str3 = <<<EOF
公众号程序员菜菜
EOF;
var_dump($str1, $str2, $str3);
运行结果:
注意:
- PHP 定界符 EOF 的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;
- 在 PHP 定界符 EOF 中的任何特殊字符都不需要转义;
- 双引号懂得更多特殊字符串的转义序列
- 单引号只能转义在单引号中引起来的单引号和转义符本身
- 双引号会解析变量,输出变量值
- 单引号不会解析变量
- 单引号在输出速度上比双引号快
例:
<?php
$str1 = '公众号程序员菜菜\n感谢大家关注';
$str2 = "公众号程序员菜菜\n感谢大家关注";
$str3 = <<<EOF
<p>公众号程序员菜菜\n感谢大家关注</p>
EOF;
var_dump($str1, $str2, $str3);
$str4 = '$str1';
$str5 = "$str1";
var_dump($str4, $str5);
运行结果:
复合类型
数组
数组是一组数据的集合,它是把一系列数据组织起来,形成一个可操作的整体。数组中可以包括很多数据,如标量数据、数组、对象、资源以及PHP中支持的其他语法结构。数组中的每个数据称为一个元素,元素包括索引(键名)和值两个部分。元素的索引可由数字或字符串组成,元素的值可以是多种数据类型。
数组是PHP基础知识中最重要的一个部分,需要大家好好学习。
例:
<?php
// 声明一个数组变量有如下两种方式
$arr1 = [];
$arr2 = array();
//给数组添加值
$arr1[] = 1;
$arr1[] = "程序员菜菜";
$arr1[] = 1.2222;
$arr1[] = false;
$arr1[] = true;
$arr1[] = [1,2,3];
//打印数组
var_dump($arr1);
运行结果:
注意:在数组中,在未明确定义索引的情况下,索引总是从0开始。
通过指定键名我们访问到数组中键名所对应的数组值。但我们需要注意的是所指定的键名是要存在于数组中的,否则程序会报错,索引未定义或索引越界。我们也可以通过循环语句来访问数组中的每一个元素。
例:
<?php
// 声明一个数组变量有如下两种方式
$arr1 = [];
$arr2 = array();
//给数组添加值
$arr1[] = 1;
$arr1[] = "程序员菜菜";
$arr1[] = 1.2222;
$arr1[] = false;
$arr1[] = true;
$arr1[] = [1,2,3];
$arr1["name"] = "公众号程序员菜菜";
foreach ($arr1 as $key => $value) {
echo "这是第{$key}个元素:";
var_dump($value);
}
运行结果:
对象
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一系列方法组成。对象数据类型也可以用于存储数据。在 PHP 中,对象必须声明。首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。
例:
<?php
//声明一个对象
class User {
public $username;
/**
* @return mixed
*/
public function getUsername()
{
return $this->username;
}
/**
* @param mixed $username
*/
public function setUsername($username): void
{
$this->username = $username;
}
}
// 访问对象
$user = new User();
// 调用对象中的方法
$user->setUsername("程序员菜菜");
$username = $user->getUsername();
echo $username;
运行结果:
特殊类型
资源类型
PHP资源resource是一种特殊变量,保存了到外部资源的一个引用。
常见资源数据类型有打开文件、数据库连接、图形画布区域等。
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
例:
<?php
$fp = fopen("C:UsersadminDesktopphp8PHP8入门指南-语法基础与变量.docx","w");
// 使用get_resource_type()函数可以获取一个资源类型
echo get_resource_type($fp)." ";
运行结果:
Null
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
例:
<?php
$str = "程序员菜菜";
var_dump($str);
$str = null;
var_dump($str);
//Null与布尔值false进行松散比较时是相等的
var_dump($str == false);
运行结果: