了解 PHP 中的数据类型

作者选择了 Open Sourcing Mental Illness Ltd作为 Write for Donations计划的一部分接受捐款。

介绍

在PHP中,就像所有编程语言一样,数据类型被用来分类一个特定的数据类型,这很重要,因为你使用的特定数据类型将决定你可以分配给它哪些值,以及你可以对它做什么(包括你可以对它执行哪些操作)。

在本教程中,我们将讨论PHP原生的重要数据类型,这不是对数据类型的全面调查,但将帮助您熟悉PHP中您可用的选项。

思考数据类型的一种方式是考虑我们在现实世界中使用的不同类型的数据. 两个不同的类型是数字和单词. 这两种数据类型以不同的方式工作. 我们会添加3 + 4来获得7,而我们会结合来获得星鱼

如果我们开始相互评估不同的数据类型,例如数字和单词,事情就会变得不那么有意义。

《天空+8》

对于计算机来说,每个数据类型可以被认为是完全不同的,就像单词和数字一样,所以我们必须小心我们如何使用它们来分配值,以及我们如何通过操作来操纵它们。

与数据类型合作

PHP 是一个 https://en.wikipedia.org/wiki/Strong_and_weak_typing) 语言,这意味着默认情况下,如果一个值不匹配预期数据类型,PHP 将尝试改变错误的数据类型的值,以便在可能的情况下匹配预期类型。

它是可能的,并鼓励,以每个文件为基础启用 严格模式。这提供了在您控制的代码中的数据类型的执行,同时允许使用可能不遵守严格数据类型的额外的代码包。

1<?php
2declare(strict_types=1);
3...

在严格模式下,只会接受与类型声明准确相符的值;否则将丢弃TypeError

数字

您在PHP中输入的任何数字都将被解释为数字,您不需要声明您正在输入的数据类型。PHP将将任何没有十进制写的数字视为 integer(如138)和任何用十进制写的数字视为 float(如138.0)。

整合者

与数学一样,计算机编程中的整数是可以是正数、负数或0(..., -1, 0, 1,...)的整数。一个整数也可以被称为int

我们可以打印一个整数在这样一个:

1echo -25;

什么会产生:

1[secondary_label Output]
2-25

我们也可以声明变量,在这种情况下,它是我们使用或操纵的数字的象征:

1$my_int = -25;
2echo $my_int;

什么会产生:

1[secondary_label Output]
2-25

我们也可以用PHP的整数做数学:

1$int_ans = 116 - 68;
2echo $int_ans;

什么会产生:

1[secondary_label Output]
248

集成器可以在PHP程序中以多种方式使用,随着您继续了解该语言的更多信息,您将有许多机会与整数一起工作,并了解更多有关此类型的数据。

浮动点数

一个 floating-point numberfloat 是一个实数,这意味着它可以是理性的或非理性的数字. 由于这个原因,浮点数可以是可以包含一部分的数字,如 9.0116.42

就像我们用整数一样,我们可以打印这样的浮点数:

1echo 17.3;

什么会产生:

1[secondary_label Output]
217.3

我们还可以声明代表浮动的变量,如下:

1$my_flt = 17.3;
2echo $my_flt;

什么会产生:

1[secondary_label Output]
217.3

和整数一样,我们也可以用PHP的浮点来做数学:

1$flt_ans = 564.0 + 365.24;
2echo $flt_ans;

什么会产生:

1[secondary_label Output]
2929.24

对于整数和浮点数,重要的是要记住,‘3’不等于‘3.0’,因为‘3’指整数,而‘3.0’指浮点。

数字在处理计算、计算项目或金钱以及时间的流逝时是有用的。

严格

一个字符串(https://andsky.com/tech/tutorials/how-to-work-with-strings-in-php)是由一个或多个字符组成的序列,可以由字母、数字或符号组成。

1echo 'This is a 47 character string in single quotes.'
2echo "This is a 47 character string in double quotes."

两条线以相同的方式输出它们的值:

1[secondary_label Output]
2This is a 47 character string in single quotes.
3This is a 47 character string in double quotes.

您可以选择使用单个引文或双引文,但无论您决定什么,都应该在程序中一致。

该程序Hello, World!展示了如何在计算机编程中使用字符串,因为构成字符串的句子是Hello, World!:

1echo "Hello, World!";

与其他数据类型一样,我们可以将字符串存储在变量中并输出结果:

1$hw = "Hello, World!"
2echo $hw;

无论如何,输出都是一样的:

1[secondary_label Output]
2Hello, World!

就像数字一样,我们可以在程序中对字符串进行许多操作,以便操纵它们以达到我们正在寻找的结果。

布莱尔

Boolean,或bool,数据类型可以是两个值中的一个,无论是还是 Boolean被用来表示与数学逻辑分支相关的真值。

您在声明 Boolean 值时不使用引文;引文中的任何东西都被认为是字符串。PHP在声明 Boolean 时不关心案例;‘True’、‘TRUE’、‘true’ 和 ‘tRuE’ 都评估相同。

数学中的许多操作给了我们评估为真或假的答案:

  • greater than
    • 500 > 100 True
    • 1 > 5 False
  • less than
    • 200 < 400 True
    • 4 < 2 False
  • equal
    • 5 = 5 True
    • 500 = 400 False

与任何其他数据类型一样,我们可以在变量中存储 Boolean 值。 与数字或字符串不同,‘echo’ 不能用来输出该值,因为 Boolean ‘true’ 值被转换为字符串 1’,而 Boolean ‘false’ 被转换为 ``(空字符串)。 这允许类型转换在 Boolean 和字符串值之间转换变量。 要输出 Boolean 值,我们有几个选项。 要输出类型和变量值,我们使用 var_dump’。 要输出字符串的变量值,我们使用 `var_export:

1$my_bool = 4 > 3;
2echo $my_bool;
3var_dump($my_bool);
4var_export($my_bool);

由于4大于3,我们将获得以下输出:

1[secondary_label Output]
21
3bool(true)
4true

echo 行将true Boolean 转换为1 的字符串. var_dump 输出bool 的变量类型以及true 的值. var_export 输出true 的值的字符串表示。

随着你在PHP中编写更多的程序,你将更加熟悉布尔语的工作方式,以及如何不同的函数和操作评估为可以改变程序的过程。

NULL 类型是没有值的,它为变量保留了空间,这允许 PHP 知道变量,但仍然认为它没有设置,一个 NULL 类型的唯一可能的值是null的无情值,当 PHP 试图访问未宣布的变量时,它会发出警告:

1echo $name;

它警告说变量未设置,但代码仍在处理:

1[secondary_label Output]
2PHP Warning:  Undefined variable $name

防止此警告的一种常见方法是通过使用isset函数检查该变量是否已设置:

1if (isset($name)) {
2    echo $name;
3}

这将完全跳过响应,不会发出任何警告。防止此类错误的第二种方法是为变量,如空字符串设置一个位数值:

1$name = '';
2echo "Hello ".$name;

现在将显示Hello没有名称,因为$name的值是一个空串:

1[secondary_label Output]
2Hello

这些解决方案都是有效和有用的,但是,当将$name值设置为空串时,该值实际上会被设置为:

1$name = '';
2if (isset($name)) {
3    echo "Hello ".$name;
4}

这还会显示你好没有名字,因为$name的值被设置为一个空串:

1[secondary_label Output]
2Hello

与大多数挑战一样,有多个解决方案. 一个解决方案是将变量设置为null值. 这为该变量留下了空间,并防止PHP引发错误,但仍然认为变量未设置:

1$name = null;
2echo $name;
3if (isset($name)) {
4    echo "Hello ".$name;
5}

变量 is 已被声明,所以当echo试图访问变量时不会出现错误. 它也不会显示任何东西,因为没有值。

我們可以使用「var_dump」來看 PHP 如何評估 NULL 變量:

1$name = null;
2var_dump($name);

这表明该类型为 NULL:

1[secondary_label Output]
2NULL

虽然不像其他变量类型那么常见,但NULL通常被用作执行操作但没有返回值的函数的返回类型。

拉拉斯

在PHP中,数组实际上是一个有序地图。 map 是一个将值与密钥关联或地图的数据类型。 这种数据类型有很多不同的用途;它可以被视为数组,列表,哈希表,字典,收藏等等。

索引列表

在最简单的形式中,一个数组将有一个数字索引或密钥。如果你不指定一个密钥,PHP将自动为你生成下一个数字密钥。默认情况下,数组密钥是0索引的,这意味着第一个密钥为0而不是1。

一个数组可以用两种方式来定义。第一种方法是使用array()语言构造,该构造使用一个单元格分开的项目列表。

1array(-3, -2, -1, 0, 1, 2, 3)

定义数组的第二种和更常见的方式是通过短数组语法使用平方数组 []

1[3.14, 9.23, 111.11, 312.12, 1.05]

我们还可以定义一组字符串,并将一个字符串分配给一个变量,如下:

1$sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'];

再次,我们不能使用echo来输出整个数组,但我们可以使用var_exportvar_dump:

1var_export($sea_creatures);
2var_dump($sea_creatures);

输出显示,数组使用数字密钥:

 1[secondary_label Output]
 2array (
 3  0 => 'shark',
 4  1 => 'cuttlefish',
 5  2 => 'squid',
 6  3 => 'mantis shrimp',
 7)
 8array(4) {
 9  [0]=>
10  string(5) "shark"
11  [1]=>
12  string(10) "cuttlefish"
13  [2]=>
14  string(5) "squid"
15  [3]=>
16  string(13) "mantis shrimp"
17}

由于数组是 0 索引的,所以var_dump显示一个与03之间的数字密钥进行索引的数组。每个数字密钥都与一个字符串相匹配。第一个元素有一个字符串0和一个字符串的值。

在设置值时,可以指定索引数组的数值密钥,但是,使用命名密钥时,密钥更常见地指定。

合伙人 Arrays

关联数组是具有命名密钥的数组. 它们通常用于存储相关的数据,例如ID中包含的信息。

1['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean']

请注意,用于分开字符串使用的双箭头操作符 =>。 字符串的左侧的单词是钥匙。 钥匙可以是整数或字符串。 在前一个数组中,键是: 名称, 动物, 颜色, 位置`。

值可以由任何数据类型组成,包括另一个数组。前面的数组中的值是:‘Sammy’、‘Shark’、‘Blue’、‘Ocean’。

像索引数组一样,让我们将相关数组存储在变量内部,并输出细节:

1$sammy = ['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean'];
2var_dump($sammy);

结果将将此数组描述为具有 4 个元素. 每个密钥的字符串是给出的,但只有值指定了字符串的类型:

 1[secondary_label Output]
 2array(4) {
 3  ["name"]=>
 4  string(5) "Sammy"
 5  ["animal"]=>
 6  string(5) "shark"
 7  ["color"]=>
 8  string(4) "blue"
 9  ["location"]=>
10  string(5) "ocean"
11}

如果我们想分离Sammy的颜色,我们可以通过添加包含数组变量的关键名称的方块:

1echo $sammy['color'];

所产生的产量:

1[secondary_label Output]
2blue

由于数组为存储数据提供关键值映射,因此它们可以在PHP程序中成为重要的元素。

常态

虽然常数实际上不是一个单独的数据类型,但它确实与其他数据类型不同。正如其名称所暗示的那样,常数是声明一次的变量,然后它们在整个应用程序中不会发生变化。

1define('MIN_VALUE', 1);
2const MAX_VALUE = 10;

定义函数需要两个参数:第一个是包含常数名称的字符串,第二个是要分配的值。这可能是前面解释的任何数据类型值。const 关键字允许常数以与其他数据类型相同的方式分配一个值,使用单一等价符号。

1echo "The value must be between MIN_VALUE and MAX_VALUE";
2echo "The value must be between ".MIN_VALUE." and ".MAX_VALUE;

由于常数不被解释,所以这些线的输出是不同的:

1[secondary_label Output]
2The value must be between MIN_VALUE and MAX_VALUE
3The value must be between 1 and 10

结论

在这一点上,你应该更好地了解一些主要的数据类型,你可以使用在PHP. 这些数据类型中的每一个都会变得重要,当你开发PHP语言的编程项目。

Published At
Categories with 技术
comments powered by Disqus