位置:首页 > 脚本语言 > PHP在线教程 > PHP变量类型

PHP变量类型

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

这里是了解PHP中的变量重要的几个知识。

  • 在PHP中所有的变量都标注有一个前导美元符号 ($).

  • 一个变量的值是其最近分配的值.

  • 变量赋以=运算符,左侧的为变量名称,在右侧则是要计算的表达式.

  • 变量可以,但也可以不需要赋值前必须声明,也就是说,可声明可不声明.

  • PHP中的变量没有固有类型 - 一个变量不用事先知道它是会被用来存储​​一个数字还是字符串.

  • 他们被使用之前变量有分配默认值.

  • 在必要的时候,PHP能非常完好地自动将类型转换从一种类型到另一种类型.

  • PHP变量与Perl类似.

PHP总共有八个数据类型,可用它来构建变量:

  • 整型: 全是数字,没有小数点,如 4195.

  • 浮点型: 是浮点数,如 3.14159 或 49.1.

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

  • NULL: 是一种特殊类型,只具有一个值: NULL.

  • 字符串: 是字符的序列,如“PHP支持的字符串操作."

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

  • 对象: 是程序员定义的类,它可以打包两个其他种类的值和函数所特有的类的实例。

  • 资源: 是外部引用的资源保持到PHP(如数据库连接)的特殊变量。

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

我们将在本章节只解释比喻的数据类型。数组和对象将另外章节在了解和学习。

整型:

他们全是数字,没有小数点,比如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。默认情况下,用浮点数所需的小数位数的最小数量。例如,代码:

$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。给一个变量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

单引号字符串被视为几乎从字面上是一样的,而双引号字符串会有替换变量的值,以及解释某些字符序列。

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

这将产生以下结果:

My $variable will not print!\n
My name will print

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

这是用双引号分隔(如“this”)字符串是由PHP的预处理均通过以下两种方式:

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

  • 变量名(从$)被替换为它们的值的字符串表示形式。

转义序列替换为:

  • \n被替换为换行符

  • \r 被替换回车符

  • \t 被替换为制表符

  • \$ 被替换的美元符号本身 ($)

  • \" 被替换为单一的双引号(")

  • \\ 被替换为单个反斜杠 (\)

here文档:

可分配多个行使用此文档中的单个字符串变量:

<?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!
<br />
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变量可以是以下四种范围类型:

变量命名:

命名规则的变量是:

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

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

变量没有大小的限制,想用多长就多长。