PHP 教程
1.2 常量
常量是在脚本执行过程中值始终保持不变的量 被定义之后就不能修改了
$num1 = 10;
$num2 = 20;
$num2 = $num1;
echo num1; 输出为10
$x = 100;
$y = 200;
$y = &$x;
echo $x 输出为200 因为&可以把数据存储的地址转给对方
1.2.1 定义常量
方法一: define()函数 例如 :
define("PI",3.1415,true) 其中true代表不区分大小写
方法二 : const关键字 只能在全局作用域和类内部使用 不能在函数,循环中使用
const max_num = 1024;
| 特性 | define()函数 | const关键字 |
|---|---|---|
| 定义位置 | 可在任何代码块中 | 只能在全局作用域或类内部 |
| 大小写敏感性 | 可通过参数设置 | 始终区分大小写 |
| 支持表达式 | PHP 7.0 + 支持 | PHP 5.6 + 支持 |
| 类常量定义 | 不支持 | 支持(推荐) |
1.2.2 预定义常量
-
PHP自带的内置定义常量 PHP_VERSION : 当前的版本号 PHP_OS : 运行PHP的操作系统 PHP_INT_MAX : PHP所能表示的最大整数 E_ERROR :致命的运行时错误(脚本终止执行)。 E_WARNING :运行时警告(脚本继续执行)。 E_NOTICE :运行时通知(通常是代码中的潜在问题)echo "PHP版本:" . PHP_VERSION; // 输出当前PHP版本
1.2.3 魔术常量
魔术常量是 PHP 中特殊的预定义常量,其值会根据它们在代码中的位置而变化
__LINE__:当前代码所在的行号。__FILE__:当前文件的完整路径和文件名。__DIR__:当前文件所在的目录(等价于dirname(__FILE__))。__FUNCTION__:当前函数的名称。__CLASS__:当前类的名称。__METHOD__:当前类方法的名称(格式为类名::方法名)。__NAMESPACE__:当前命名空间的名称。
例如 :
echo "当前行号:" . __LINE__; // 输出当前代码所在的行号
echo "当前文件路径:" . __FILE__; // 输出当前文件的完整路径
1.3 数据类型
PHP 是一种弱类型语言,变量的类型不需要预先声明,会根据存储的值自动推断。PHP 的数据类型可分为标量类型、复合类型和特殊类型。
1.3.1 基本类型(标量类型)
字符串(string) :可用单引号(')、双引号(")去定义
整数(integer/int) :没有小数部分的数字,可表示为十进制(如123)、八进制(前缀0,如012)、十六进制(前缀0x,如0x1A)、二进制(前缀0b,如0b1101)
浮点数(float/double) :带小数部分的数字或指数形式(如3.14、1.2e3即1200)。
布尔值(boolean/bool) :只有两个值:true(真)和false(假)。注意:0、0.0、空字符串("")、null、空数组([])会被判断为false,其他值通常为true。
1.3.2 复台类型(存储多个数据)
复合类型可以存储多个值或多个类型的数据,PHP 中主要包括以下两种:
数组(array): 用来存储一组有序或者无序的数据 分为索引数组和 关联数组
- 索引数组:键为整数,默认从
0开始(如$arr = [10, 20, 30];)。 - 关联数组:键为字符串(如
$user = ['name' => 'Tom', 'age' => 20];)
对象(object) :由类进化而来 包含属性(变量)和方法(函数)
- 示例:
class Person {}; $p = new Person();
1.3.3 特殊类型
unset()可以销毁变量
-
NULL表示变量没有值,以下三种情况变量为null
直接赋值
$var = null;。变量未被定义。
用
unset()函数销毁变量后(如unset($var);)。
1.3.4 类型转换
PHP 会根据上下文自动进行类型转换(隐式转换),也可通过代码手动转换(显式转换)
隐式转换:
例如字符串与数字相加时,字符串会被转换为数字("12" + 3 = 15)
例如
echo ("15" + 15 ); 输出30
显式转换:通过在目标面前加关键字实现
(int)或(integer):转换为整数(如(int)"123" = 123)。(float)或(double):转换为浮点数。(string):转换为字符串。(bool)或(boolean):转换为布尔值。(array):转换为数组。(object):转换为对象。(null):转换为NULL(通过unset()或赋值null)。
1.4 运算符
运算符用于对变量或值进行操作,PHP 中包含多种类型的运算符
1.4.1 算术运算符
运算图标如下
+ | 加法 | 5 + 3 | 8 |
|---|---|---|---|
- | 减法 | 5 - 3 | 2 |
* | 乘法 | 5 * 3 | 15 |
/ | 除法(返回浮点数) | 5 / 3 | 1.666... |
% | 取模(求余数) | 5 % 3 | 2 |
++ | 自增(前增 / 后增) | $a=3; $b=++$a; | $a=4, $b=4 |
-- | 自减(前减 / 后减) | $a=3; $b=$a--; | $a=2, $b=3 |
1.4.2 关系运算符(比较运算符)
用于比较2个值,返回的是布尔值(true和false),如下图所示:
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
== | 等于(值相等,类型可不同) | 5 == "5" | true |
=== | 全等(值和类型都相等) | 5 === "5" | false |
!= 或 <> | 不等于 | 5 != 3 | true |
!== | 不全等 | 5 !== 5 | false |
> | 大于 | 5 > 3 | true |
< | 小于 | 5 < 3 | false |
>= | 大于等于 | 5 >= 5 | true |
<= | 小于等于 | 5 <= 3 | false |
1.4.3 逻辑运算符
用于组合多个条件, 返回布尔值,如下表所示
| 运算符 | 描述 | 示例 | 结果 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
&& 或 and | 逻辑与(两边都为true则为true) | true && false | false | ||||||||
| ` | 或or` | 逻辑或(至少一边为true则为true) | `true | false` | true | ||||||
! | 逻辑非(取反) | !true | false | ||||||||
xor | 逻辑异或(两边一真一假则为true) | true xor false | true |
1.4.4 赋值运算符
用于给变量赋值,基本赋值运算符为=,此外还有复合赋值运算符
| 运算符 | 描述 | 等价表达式 |
|---|---|---|
= | 基本赋值 | $a = 5; |
+= | 加赋值 | $a += 3; 等价于 $a = $a + 3; |
-= | 减赋值 | $a -= 3; 等价于 $a = $a - 3; |
*= | 乘赋值 | $a *= 3; 等价于 $a = $a * 3; |
/= | 除赋值 | $a /= 3; 等价于 $a = $a / 3; |
.= | 字符串连接赋值 | $a .= "b"; 等价于 $a = $a . "b"; |
1.4.5 字符串连接符(.)
*用于连接两个字符串,示例
$str1 = "Hello";
$str2 = "World";
echo $str1 . " " . $str2; // 输出 "Hello World"
1.4.6 错误抑制符(@)
在表达式前加@可抑制该表达式产生的错误信息
发生报错信息的地方 给上一个@ 可以掩盖报错
1.4.7 三元运算符(?.)
简化if-else语句的写法,语法:条件 ? 表达式1 : 表达式2。
- 若条件为
true,返回表达式 1 的值;否则返回表达式 2 的值。 -
`$age = 18; $status = $age >= 18 ? "成年" : "未成年"; `(`$status`为`"成年"`)输出为成年
1.4.8 null合并运算符(??)
用于判断变量是否存在且不为null 语法 :$var ??
若$var存在且不为null,返回$var的值;否则返回默认值
示例:
`$name = $_GET['name'] ?? "Guest";`
(若$_GET['name']不存在,$name为"Guest")
1.5 判断
判断语句用于根据条件执行不同的代码块,PHP 中主要使用if语句
1.5.1 语法
if语句:当条件为true时执行代码块。
if (条件) {
// 条件为true时执行的代码
}
if-else语句:条件为true时执行一个代码块,否则执行另一个代码块
if (条件) {
// 条件为true时执行
} else {
// 条件为false时执行
}
if-elseif-else语句
:多条件判断,依次检查条件,满足第一个条件后执行对应代码块,否则执行else代码块。
if (条件1) {
// 条件1为true时执行
} elseif (条件2) {
// 条件2为true时执行
} else {
// 所有条件都为false时执行
}
switch语句:用于多值匹配(适合判断一个变量等于多个值的情况)。
$num = 2;
switch ($num) {
case 1:
echo "数字是1";
break; // 跳出switch
case 2:
echo "数字是2";
break;
default:
echo "数字不是1或2";
}
1.52 作作业
- 编写程序,输入一个整数,判断它是正数、负数还是零。
- 输入一个年份,判断该年份是否为闰年(能被 4 整除且不能被 100 整除,或能被 400 整除)。
- 输入学生成绩(0-100),判断成绩等级(90-100 为 A,80-89 为 B,70-79 为 C,60-69 为 D,0-59 为 E)