PHP - 变量类型

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

以下是PHP中最重要的变量知识.

  • PHP中的所有变量都以前导美元符号($)表示.

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

  • 变量分配了=运算符,变量位于左侧和要在右侧评估的表达式.

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

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

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

  • PHP在自动转换类型方面做得很好必要时从一个到另一个.

  • PHP vari ables类似于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.对于对象,包含值意味着具有已分配值的成员变量.

  • 有效资源为真(尽管某些函数在它们返回资源时成功将在失败时返回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.要给变量赋一个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变量可以是四种范围类型之一 :

  • 本地变量

  • 功能参数

  • 全局变量

  • 静态变量

变量命名

命名变量的规则是 :

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

  • 变量名称可以包含数字,字母,下划线但不能使用+, - ,%,(,)等字符. &安培;等等

变量没有大小限制.