PHP - 变量类型


在 PHP 程序中存储信息的主要方法是使用变量。

以下是有关 PHP 变量的最重要的知识。

  • PHP 中的所有变量均以美元符号 ($) 开头。

  • 变量的值是其最近赋值的值。

  • 变量使用 = 运算符进行赋值,变量位于左侧,要计算的表达式位于右侧。

  • 变量可以但不需要在赋值之前声明。

  • PHP 中的变量没有内在类型 - 变量事先不知道它将用于存储数字还是字符串。

  • 在分配之前使用的变量具有默认值。

  • PHP 在必要时自动将一种类型转换为另一种类型方面做得很好。

  • PHP 变量与 Perl 类似。

PHP 共有八种数据类型,我们用它们来构造变量 -

  • 整数- 是没有小数点的整数,例如 4195。

  • 双精度数 - 是浮点数,例如 3.14159 或 49.1。

  • 布尔值- 只有两个可能的值:true 或 false。

  • NULL - 是一种特殊类型,只有一个值:NULL。

  • 字符串- 是字符序列,例如“PHP 支持字符串操作”。

  • 数组- 是其他值的命名和索引集合。

  • 对象- 是程序员定义的类的实例,它可以打包特定于该类的其他类型的值和函数。

  • 资源- 是保存对 PHP 外部资源(例如数据库连接)的引用的特殊变量。

前五个是简单类型,接下来的两个(数组和对象)是复合类型 - 复合类型可以打包任意类型的其他任意值,而简单类型则不能。

本章中我们将只解释简单的数据类型。数组和对象将分开解释。

整数

它们是整数,没有小数点,例如 4195。它们是最简单的类型。它们对应于简单整数,包括正数和负数。整数可以分配给变量,也可以在表达式中使用,如下所示 -

$int_var = 12345;
$another_int = -12345 + 12345;

整数可以采用十进制(基数 10)、八进制(基数 8)和十六进制(基数 16)格式。默认为十进制格式,八进制整数以 0 开头指定,十六进制以 0x 开头。

对于大多数常见平台,最大整数是 (2**31 . 1) (或 2,147,483,647),最小(最大负数)整数是 . (2**31 . 1)(或 .2,147,483,647)。

双打

他们喜欢 3.14159 或 49.1。默认情况下,双精度打印所需的最小小数位数。例如,代码 -

<?php
   $many = 2.2888800;
   $many_2 = 2.2111200;
   $few = $many + $many_2;
   
   print("$many + $many_2 = $few <br>");
?>

它产生以下浏览器输出 -

2.28888 + 2.21112 = 4.5

布尔值

它们只有两个可能的值:true 或 false。PHP 提供了几个专门用作布尔值的常量:TRUE 和 FALSE,可以像这样使用 -

if (TRUE)
   print("This will always print<br>");

else
   print("This will never print<br>");

将其他类型解释为布尔值

以下是确定任何尚未属于布尔类型的值的“真实性”的规则 -

  • 如果该值是数字,则如果完全等于零,则为 false,否则为 true。

  • 如果该值是字符串,则如果该字符串为空(有零个字符)或者是字符串“0”,则为 false,否则为 true。

  • NULL 类型的值始终为 false。

  • 如果该值是一个数组,如果它不包含其他值,则为 false,否则为 true。对于一个对象来说,包含一个值意味着拥有一个已经被赋值的成员变量。

  • 有效资源为true(尽管某些成功时返回资源的函数在不成功时会返回FALSE)。

  • 不要使用 double 作为布尔值。

当在布尔上下文中使用以下每个变量时,其名称中都嵌入了真值。

$true_num = 3 + 0.14159;
$true_str = "Tried and true"
$true_array[49] = "An array element";
$false_array = array();
$false_null = NULL;
$false_num = 999 - 999;
$false_str = "";

无效的

NULL 是一种特殊类型,只有一个值:NULL。要给变量赋予 NULL 值,只需像这样分配它 -

$my_var = NULL;

特殊常量NULL按照惯例是大写的,但实际上它不区分大小写;你也可以输入 -

$my_var = null;

已分配 NULL 的变量具有以下属性 -

  • 它在布尔上下文中计算结果为 FALSE。

  • 使用 IsSet() 函数测试时返回 FALSE。

弦乐

它们是字符序列,例如“PHP 支持字符串操作”。以下是字符串的有效示例

$string_1 = "This is a string in double quotes";
$string_2 = 'This is a somewhat longer, singly quoted string';
$string_39 = "This string has thirty-nine characters";
$string_0 = ""; // a string with zero characters

单引号字符串几乎按字面意思处理,而双引号字符串则用变量的值替换变量,并专门解释某些字符序列。

<?php
   $variable = "name";
   $literally = 'My $variable will not print!';
   
   print($literally);
   print "<br>";
   
   $literally = "My $variable will print!";
   print($literally);
?>

这将产生以下结果 -

My $variable will not print!
My name will print

对字符串长度没有人为限制 - 在可用内存的范围内,您应该能够创建任意长的字符串。

由双引号分隔的字符串(如“this”)由 PHP 通过以下两种方式进行预处理 -

  • 某些以反斜杠 (\) 开头的字符序列被替换为特殊字符

  • 变量名称(以 $ 开头)将替换为其值的字符串表示形式。

转义序列替换是 -

  • \n 被换行符替换
  • \r 被替换为回车符
  • \t 被制表符替换
  • \$ 被美元符号本身替换 ($)
  • \" 替换为单双引号 (")
  • \\ 被替换为单个反斜杠 (\)

此处文档

您可以使用此处文档将多行分配给单个字符串变量 -

<?php
   $channel =<<<_XML_
   
   <channel>
      <title>What's For Dinner</title>
      <link>http://menu.example.com/ </link>
      <description>Choose what to eat tonight.</description>
   </channel>
   _XML_;
   
   echo <<<END
   This uses the "here document" syntax to output multiple lines with variable 
   interpolation. Note that the here document terminator must appear on a line with 
   just a semicolon. no extra whitespace!
   
END; print $channel; ?>

这将产生以下结果 -

This uses the "here document" syntax to output
multiple lines with variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!

<channel>
<title>What's For Dinner<title>
<link>http://menu.example.com/<link>
<description>Choose what to eat tonight.</description>

变量范围

范围可以定义为变量对声明它的程序的可用性范围。PHP 变量可以是四种范围类型之一 -

变量命名

命名变量的规则是 -

  • 变量名称必须以字母或下划线字符开头。

  • 变量名可以由数字、字母、下划线组成,但不能使用 + 、 - 、 % 、 ( 、 ) 等字符。& , ETC

变量没有大小限制。