加密白客养成计划(PHP基础)

63 阅读3分钟

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.141.2e31200)。

布尔值(boolean/bool :只有两个值:true(真)和false(假)。注意:00.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 + 38
-减法5 - 32
*乘法5 * 315
/除法(返回浮点数)5 / 31.666...
%取模(求余数)5 % 32
++自增(前增 / 后增)$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 != 3true
!==不全等5 !== 5false
>大于5 > 3true
<小于5 < 3false
>=大于等于5 >= 5true
<=小于等于5 <= 3false

1.4.3 逻辑运算符

用于组合多个条件, 返回布尔值,如下表所示

运算符描述示例结果
&&and逻辑与(两边都为true则为truetrue && falsefalse
`or`逻辑或(至少一边为true则为true`truefalse`true
!逻辑非(取反)!truefalse
xor逻辑异或(两边一真一假则为truetrue xor falsetrue

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) {
    // 条件1true时执行
} elseif (条件2) {
    // 条件2true时执行
} else {
    // 所有条件都为false时执行
}

switch语句:用于多值匹配(适合判断一个变量等于多个值的情况)。

$num = 2;
switch ($num) {
    case 1:
        echo "数字是1";
        break; // 跳出switch
    case 2:
        echo "数字是2";
        break;
    default:
        echo "数字不是1或2";
}

1.52 作作业

  1. 编写程序,输入一个整数,判断它是正数、负数还是零。
  2. 输入一个年份,判断该年份是否为闰年(能被 4 整除且不能被 100 整除,或能被 400 整除)。
  3. 输入学生成绩(0-100),判断成绩等级(90-100 为 A,80-89 为 B,70-79 为 C,60-69 为 D,0-59 为 E)

1.6 作业讲解