1.4 什么是变量

变量是用于临时存储值的容器。这些值可以是数字、文本,或者是复杂得多的数据。PHP具有8种变量。其中包括4种标量(单值)类型——布尔型TRUEFALSE)、整型浮点型(小数)和字符串型(字符),两种非标量(多值)类型——数组对象,以及资源(当与数据库交互时将看到它)和NULL(它是一种不具有任何值的特殊类型)。

不管创建什么类型,PHP中的所有变量都遵循某种特定的语法规则。

  • 变量的名称——也称为它的标识符——必须以美元符号($)开头,例如,$name

  • 变量名称可以包含字母、数字和下划线的组合,例如,$my_report1

  • 美元符号之后的第一个字符必须是字母或下划线(不能是数字)。

  • PHP中的变量名称是区分大小写的。这是一个非常重要的规则。这意味着$name$Name是截然不同的变量。

为了开始使用变量,我将利用几个预定义的变量,在运行PHP脚本时会自动设置它们的值。在深入介绍这个脚本之前,应该知道另外两件事情。第一,可以使用等于号(=)(也称为赋值运算符(assignment operator))给变量赋值。第二,无需引号即可打印变量:

print $some_var;

或者可以在双引号内打印变量:

print "Hello, $name";

但不能在单引号内打印变量:

print 'Hello, $name'; // Won't work!

使用变量

1. 在文本编辑器或IDE中创建新的PHP文档,命名为predefined.php(参见脚本1-5)。

脚本1-5 这个脚本会打印3个PHP预定义的变量

1    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3    <head>
4       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5       <title>Predefined Variables</title>
6    </head>
7    <body>
8    <?php # Script 1.5 - predefined.php
9    
10   // Create a shorthand version of the variable names:
11   $file = $_SERVER['SCRIPT_FILENAME'];
12   $user = $_SERVER['HTTP_USER_AGENT'];
13   $server = $_SERVER['SERVER_SOFTWARE'];
14   
15   // Print the name of this script:
16   echo "<p>You are running the file:<br /><b>$file</b>.</p>\n";
17   
18   // Print the user's information:
19   echo "<p>You are viewing this page using:<br /><b>$user</b></p>\n";
20   
21   // Print the server's information:
22   echo "<p>This server is running: <br /><b>$server</b>.</p>\n";
23   
24   ?>
25   </body>
26   </html>

2. 添加PHP开始标签和第一条注释。

<?php # Script 1.5 - predefined.php

从现在起,我的脚本将不再添加关于创建者、创建日期等的注释,尽管你应该继续这样做。不过,我将添加一个注释,列出脚本编号和文件名,以便进行交叉引用(在本书中,以及当你从本书的支持Web站点www.LarryUllman.com上下载它们时)。

3. 创建脚本中要使用的第一个变量的简写版本。

$file = $_SERVER['SCRIPT_FILENAME'];

这个脚本将使用3个变量,它们都来自更大的、预定义的$_SERVER变量。$_SERVER指大量与服务器相关的信息。该脚本要使用的第一个变量是$_SERVER['SCRIPT_FILENAME']。这个变量存储要运行的脚本的完整路径和名称(例如,C:\Program Files\Apache\htdocs\predefined.php)。

$_SERVER['SCRIPT_FILENAME']中存储的值将被赋予新变量$file。用更短的名称创建新变量,然后从$_SERVER给它们赋值,这将使得在打印这些变量时更容易引用它们(它还避开了你将适时学到的其他一些问题)。

4. 创建另外两个变量的简写版本。

$user = $_SERVER['HTTP_USER_AGENT'];
$server = $_SERVER ['SERVER_SOFTWARE'];

$_SERVER['HTTP_USER_AGENT']代表访问脚本的用户的Web浏览器和操作系统。该值将被赋予$user

$_SERVER['SERVER_SOFTWARE']代表运行PHP的服务器上的Web应用程序(例如,Apache、Abyss、Xitami、IIS)。必须安装这个程序(参见附录A),以便在计算机上运行PHP脚本。

5. 打印出将被运行的脚本的名称。

echo "<p>You are running the file:<br /><b>$file</b>.</p>\n";

将要打印的第一个变量是$file。注意:这个变量必须打印在双引号内,我还利用PHP换行符(\n),它将在生成的HTML源文件中添加一个分行符。还会添加一些基本的HTML标签(段落和加粗),从而给生成的页面增添一些优雅的风格。

6. 打印出访问脚本的用户的信息。

echo "<p>You are viewing this page using:<br /><b>$user</b></p>\n";

这一行代码打印第二个变量$user。为了重复第4步中所做的工作,使$user$_SERVER['HTTP_USER_AGENT']相关联,并引用正访问Web页面的操作系统、浏览器类型和浏览器版本。

7. 打印出服务器信息。

echo "<p>This server is running: <br /><b>$server</b>.</p>\n";

8. 完成HTML和PHP代码。

?>
</body>
</html>

9. 将文件另存为predefined.php,存放在Web目录中,并在Web浏览器中测试它(参见图1-11)。

图1-11 predefined.php脚本向浏览器报告回关于脚本、正用于查看它的Web浏览器以及服务器自身的信息

提示

  • 如果你对这个脚本或其他任何脚本有任何疑问,可以向本书相应的Web论坛(www.LarryUllman.com/forums/)求助,以获取帮助。

  • 如果有可能,使用不同的Web浏览器和/或在另一个服务器上运行这个脚本(参见图1-12)。

图1-12 这是本书中第一个真正动态的脚本,这是由于Web页面依赖于运行它的服务器和查看它的Web浏览器而变化(对比图1-11)

  • 创建变量时最重要的考虑事项是使用一致的命名模式。在本书中,你将看到变量名称全都用的是小写字母,并且用下划线分隔单词($first_name)。有些程序员更喜欢使用词首大写字母,例如:$FirstName(即驼峰式拼写法)。

  • PHP处理变量的方式非常随意,这意味着你不必初始化它们(设置一个即时值)或声明它们(设置具体的类型),并且你可以在多种类型之间转换一个变量,而不会引发任何问题。

目录