PHP 基础
最后修改于 2025 年 3 月 11 日
在本文中,我们将介绍 PHP 的基础知识。
PHP
PHP 是一种为 Web 开发设计的脚本语言。它用于生成动态网页。目前,PHP 是使用最广泛的编程语言之一。它的许多语法都借鉴了 C、Java 和 Perl,并具有一些独特的 PHP 特性。
PHP 可以嵌入到 HTML 代码中,并且通常在 Web 服务器上运行。Web 服务器需要配置为处理 PHP 代码并从中创建网页内容。它可以部署在大多数 Web 服务器和操作系统上。PHP 是一个免费软件。PHP 最初创建于 1995 年,此后一直在积极开发中。
安装 PHP
为了在我们的计算机上进行开发,可以通过安装包或开发包(如 WAMP、MAMP 或 XAMPP)来安装 PHP。
学习 PHP 基础知识的一个好方法是使用 PHP CLI。PHP CLI 是 PHP 脚本语言的命令行解释器。
$ sudo apt install php-cli
在 Debian Linux 系统上,我们可以通过系统软件包管理器安装 PHP CLI。
在 Windows 上,可以在 https://php.ac.cn/downloads.php 下载二进制文件。
$ php -v PHP 8.4.4 (cli) (built: Feb 11 2025 16:24:56) (NTS Visual C++ 2022 x64) Copyright (c) The PHP Group Zend Engine v4.4.4, Copyright (c) Zend Technologies
我们使用 php -v 命令获取 PHP 的版本。
PHP CLI
PHP CLI 是 PHP 语言的命令行解释器。它对于从 shell 中测试 PHP 脚本很有用。在本文中,我们使用 PHP 命令行解释器。我们关注 PHP 语言的核心内容。
<?php echo "this is PHP language\n";
这里我们有一个简单的 PHP 脚本。
$ php simple.php this is PHP language
PHP 交互式 shell
像 Python 或 Ruby 一样,PHP 也有一个交互式 shell。它对于测试小的语言结构很有用。
$ php -a Interactive mode enabled php> print PHP_OS; Linux php> print PHP_VERSION; 8.4.4
PHP shell 通过 php 命令的 -a 选项调用。shell 使用 php> 提示符。
PHP 注释
注释 由人类用来阐明源代码。PHP 中的所有注释都以 # 字符开头。
<?php # comments.php # Author Jan Bodnar # ZetCode 2025 echo "This is comments.php script\n";
PHP 解释器会忽略 # 字符之后的所有内容。
// comments.php // author Jan Bodnar // ZetCode 2022 /* comments.php author Jan Bodnar ZetCode 2022 */
PHP 也识别来自 C 语言的注释。
PHP 空格
PHP 中的空格用于分隔 PHP 源文件中的标记。它用于提高源代码的可读性。
public $isRunning;
在某些地方需要空格;例如,在访问修饰符和变量名之间。在其他地方,禁止使用空格。它不能出现在变量标识符中。
$a=1; $b = 2; $c = 3;
放置在标记之间的空格量与 PHP 解释器无关。它取决于程序员的偏好和风格。
$a = 1; $b = 2; $c = 3; $d = 4;
我们可以将两个语句放入一行。或者将一个语句分成三行。但是,源代码应该对人类可读。存在关于如何布局源代码的公认标准。
PHP 分号
分号用于标记 PHP 中语句的结尾。它是强制性的。
$a = 34; $b = $a * 34 - 34; echo $a;
这里我们有三个不同的 PHP 语句。第一个是赋值。它将一个值放入 $a 变量。第二个是一个表达式。该表达式被求值,输出被赋予 $b 变量。第三个是一个命令。它打印 $a 变量。
PHP 变量
一个 变量 是一个标识符,它保存一个值。在编程中,我们说我们将一个值分配给一个变量。从技术上讲,变量是对计算机内存的引用,值存储在那里。在 PHP 语言中,一个变量可以保存一个字符串、一个数字或各种对象,如函数或类。变量可以随时间被分配不同的值。
PHP 中的变量由 $ 字符(称为 sigil)和标签组成。标签可以由字母数字字符和下划线 _ 字符创建。变量不能以数字开头。然后,PHP 解释器可以更容易地区分数字和变量。
$Value $value2 $company_name
这些是有效的 PHP 标识符。
$12Val $exx$ $first-name
这些是无效的 PHP 标识符示例。
变量是 区分大小写 的。这意味着 $Price、$price 和 $PRICE 是三个不同的标识符。
<?php $number = 10; $Number = 11; $NUMBER = 12; echo $number, $Number, $NUMBER; echo "\n";
在我们的脚本中,我们将三个数值分配给三个变量并打印它们。但是,出于清晰考虑,不建议创建仅大小写不同的变量;这被认为是一种不好的做法。
$ php case.php 101112
PHP 常量
常量是程序执行期间不能更改的值的标识符。按照惯例,常量标识符总是大写。
<?php
define("SIZE", 300);
define("EDGE", 100);
#SIZE = 100;
echo SIZE;
echo EDGE;
echo "\n";
在脚本中,我们定义了两个常量。
define("SIZE", 300);
define("EDGE", 100);
常量使用 define 函数创建。
# SIZE = 100;
常量与变量不同;我们不能为现有常量分配不同的值。如果取消注释该行,脚本将失败。
echo SIZE; echo EDGE;
常量不使用美元符字符。
$ php constants.php 300100
以下是 PHP 编译时常量列表。
__CLASS__ __DIR__ __FILE__ __FUNCTION__ __METHOD__ __NAMESPACE__
PHP 字面量
一个 字面量 是在 PHP 源代码中表示值的一种表示法。从技术上讲,字面量是在编译时分配值的,而变量是在运行时分配值的。
$age = 29; $nationality = "Hungarian";
在这里,我们将两个字面量分配给变量。 数字 29 和字符串“Hungarian”是字面量。
<?php $name1 = "Jane "; $age1 = 17; $name2 = "Rose "; $age2 = 16; echo "Patrick 34\n"; echo "Luke 22\n"; echo $name1, $age1, "\n"; echo $name2, $age2, "\n";
如果我们没有将字面量分配给变量,则无法使用它 - 它会被丢弃。
$ php literals.php Patrick 34 Luke 22 Jane 17 Rose 16
PHP 运算符
一个 运算符 是一个用于对某个值执行操作的符号。
+ - * / % ** ++ -- ?: ?? = += -= *= /= .= %= == != === !== <> > < >= <= <=> && || ! xor or & ^ | ~ . << >>
这些是 PHP 运算符。我们将在稍后的教程中讨论运算符。
PHP 分隔符
一个 分隔符 是一系列用于指定纯文本或其他数据流中分隔、独立区域之间边界的一个或多个字符。
$a = "PHP"; $b = 'Java';
单引号和双引号字符用于标记字符串的开头和结尾。
function setDate($date) {
$this->date = $data;
}
if ($a > $b) {
echo "\$a is bigger than \$b";
}
括号用于标记函数签名。签名是函数参数。大括号用于标记函数体的开头和结尾。它们也用于流程控制。
$a = array(1, 2, 3); echo $a[1];
方括号用于标记数组索引。
/* Author Jan Bodnar January 2022 ZetCode */
/* */ 分隔符用于在 PHP 中提供 C 风格的注释。
<?php // PHP code
<?php 分隔符用于声明 PHP 代码的开始。
PHP 关键字
关键字是 PHP 编程语言中的保留字。关键字用于在计算机程序中执行特定任务;例如,打印一个值、执行重复任务或执行逻辑运算。程序员不能将关键字用作普通变量。
以下是 PHP 关键字列表。
abstract and array as break case catch class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw try use var while xor yield yield from
PHP 控制台输出
来自我们的 PHP 脚本的输出将发送到控制台。请注意,我们说的是控制台,因为我们在这里使用 PHP_CLI 命令行解释器。如果我们在 Web 上测试这些示例,输出将发送到浏览器。
<?php $a = 23; print $a;
此 PHP 脚本将一个值分配给一个变量。它将其打印到控制台。
$a = 23;
我们将值 23 分配给 $a 变量。每个变量都以美元字符开头。此 PHP 代码行是一个语句。每个语句都以分号结尾。在 PHP 中,分号不是可选的,就像在 JavaScript 或 Ruby 中一样。它们是强制性的。
print $a;
我们将 $a 变量打印到控制台。print 关键字不会向输出添加新行。如果我们想要一个新行,我们必须手动添加它。print 关键字只接受一个参数。
<?php $a = 23; $b = 24; echo $a, "\n", $b, "\n";
在此脚本中,我们使用 echo 关键字。它类似于 print 关键字。与 print 关键字不同,它可以接受多个参数。
$a = 23; $b = 24;
我们定义了两个变量。
echo $a, "\n", $b, "\n";
我们将变量打印到控制台。我们还包括换行符。参数可以用逗号分隔。
$ php echoing.php 23 24
PHP 命令行参数
PHP 脚本可以接收命令行参数。它们跟随程序名称。$argv 是一个保存 PHP 脚本所有参数的数组。$argc 保存传递的参数数量,包括 PHP 脚本的名称。
<?php
echo "There are $argc arguments\n";
for ($i=0; $i < $argc; $i++) {
echo $argv[$i] . "\n";
}
此脚本使用命令行参数。
echo "There are $argc arguments\n";
我们打印传递给脚本的参数数量。
for ($i=0; $i < $argc; $i++) {
echo $argv[$i] . "\n";
}
在 for 循环中,我们遍历并打印所有参数。循环将在稍后的教程中介绍。
$ php arguments.php 1 2 3 There are 4 arguments arguments.php 1 2 3
我们将三个参数传递给脚本。脚本的名称也是 PHP 脚本的一个参数。
PHP 类型
PHP 是一种弱类型语言。它使用类型,但程序员在声明变量时不会指定它们。一个 数据类型 是各种数据类型之一,如 double、integer 或 boolean。特定数据类型的值来自一个特定范围的值,这些值说明了该类型的可能值、可以在该类型上执行的操作以及该类型值的存储方式。PHP 隐式使用数据类型。程序员不显式指定数据类型。
<?php $a = "Jane"; echo "$a \n"; $a = 12; echo "$a \n"; $a = 56.4; echo "$a \n"; $a = true; echo "$a \n";
在此 PHP 脚本中,我们有一个 $a 变量。首先,我们为其分配一个字符串,然后是一个整数、一个双精度数,最后是一个布尔值。如果我们将一个字符串分配给一个变量,PHP 会自动创建一个字符串变量。
$ php dynamic.php Jane 12 56.4 1
<?php
$temperature = 12.4;
$name = "Jane";
$age = 17;
$values = array(1, 2, 3, 4, 5, 6);
class Being {};
$somebody = new Being();
echo gettype($temperature), "\n";
echo gettype($name), "\n";
echo gettype($age), "\n";
echo gettype($values), "\n";
echo gettype($somebody), "\n";
在上面的 PHP 脚本中,我们动态创建了五种类型。
$temperature = 12.4;
定义了一个双精度变量。
$name = "Jane";
定义了一个字符串变量。
$age = 17;
定义了一个整数变量。
$values = array(1, 2, 3, 4, 5, 6);
class Being {};
这是一个数组和一个类。这两种类型将在稍后进行更详细的介绍。
echo gettype($temperature), "\n";
gettype 函数返回相关变量的类型。
$ php gettype.php double string integer array object
PHP 类型声明
类型声明可以添加到函数参数、返回值和类属性。它们使用 declare(strict_types=1); 指令强制执行。
<?php
declare(strict_types=1);
function power(int $a, int $b=2): int {
if ($b == 2) {
return $a * $a;
}
$value = 1;
for ($i = 0; $i < $b; $i++) {
$value *= $a;
}
return $value;
}
$v1 = power(5);
$v2 = power(5, 4);
echo "5^2 is $v1 \n";
echo "5^4 is $v2 \n";
在示例中,我们使用类型声明来声明函数参数和函数返回值。
PHP 常量
在 PHP 中,我们可以创建常量。常量 是一个值的名称,与变量不同,它不能与不同的值重新关联。我们使用 define 函数在 PHP 中创建常量。
<?php
define("BLUE", "0000FF");
echo BLUE, "\n";
echo defined("BLUE");
echo "\n";
在此 PHP 脚本中,我们定义了一个 BLUE 常量。
define("BLUE", "0000FF");
这里我们定义了 BLUE 常量。以大写字母书写常量是一种约定。
echo BLUE, "\n";
在这里我们使用它。请注意,常量前面没有 $ 美元字符。
echo defined("BLUE");
我们使用了另一个函数,即 defined 函数。它检查特定的常量是否存在。如果存在,则返回 true。
$ php constant.php 0000FF 1
PHP 也有一些预定义的常量。
<?php echo TRUE; echo "\n"; echo PHP_VERSION; echo "\n"; echo PHP_OS; echo "\n"; echo __LINE__; echo "\n"; echo __FILE__; echo "\n"; echo DIRECTORY_SEPARATOR; echo "\n"; echo PHP_DATADIR; echo "\n";
在这里我们打印一些内置的 PHP 常量。例如,PHP_OS 常量打印 PHP 构建所在的操作系统版本。
$ php predefined_constants.php 1 8.1.2 Linux 9 /home/jano/Documents/prog/php/simple.php / /usr/share/php/8.1
PHP 变量插值
变量插值 是用它们的对应值替换字符串字面量中的变量。变量插值的另一个名称是:变量替换或变量扩展。
<?php $age = 17; echo "Jane is $age years old\n";
$age 变量在双引号引用的字符串中被替换为值 17。
$ php interpolation.php Jane is 17 years old
<?php $age = 17; echo 'Jane is $age years old\n';
但是,如果我们使用单引号,这不起作用。在这种情况下,不会发生插值,并且任何特殊字符都不起作用。
$ php nointerpolation.php Jane is $age years old\n
我们看到了字符串的逐字输出。
PHP 包含文件
为了较大的程序,PHP 代码被分成多个文件。我们使用 include 语句来连接各种 PHP 文件。
<?php
define("VERSION", 1.12);
function get_max($x, $y) {
if ($x > $y) {
return $x;
} else {
return $y;
}
}
假设我们有一个 common.php 文件,在其中定义了一些常量和函数。
<?php include "common.php"; echo "The version is " . VERSION . "\n"; $a = 5; $b = 3; echo get_max($a, $b), "\n";
并且我们有另一个文件,想要使用上述定义。
include "common.php";
我们只需使用 include 关键字将定义包含到我们的文件中。我们必须指定 common.php 文件的确切路径。在我们的简单情况下,这两个文件位于同一目录中。
$ php myfile.php The version is 1.12 5
来源
在本文中,我们介绍了 PHP 语言。
作者
列出所有 PHP 教程。