PHP基础语法讲解

大家好,我是程序员小羊!
前言:
PHP(Hypertext Preprocessor)是一种常用于网页开发的服务器端脚本语言,易于学习并且与 HTML 紧密结合。以下是
PHP 的基础语法详细讲解。
1. PHP 基础结构
1.1 PHP 脚本结构
PHP 代码通常嵌入到 HTML 文件中,并且用特殊的标记 <?php ?> 或短标记 <? ?> 包围:
<?phpecho "Hello, World!";
?>
<?php是 PHP 代码的起始标记,?>是结束标记。- PHP 代码可以放在 HTML 代码中间,服务器解析时只执行 PHP 代码,输出结果会生成标准 HTML 页面。
1.2 PHP 文件扩展名
PHP 文件通常以 .php 作为扩展名,例如 index.php。
2. 基本语法规则
2.1 注释
PHP 支持 C 和 C++ 风格的注释:
-
单行注释:
// 这是单行注释 # 这也是单行注释 -
多行注释:
/*这是多行注释可以有多行内容 */
2.2 大小写敏感
-
PHP 中的变量名是大小写敏感的。
$Variable = "Hello"; echo $variable; // 会出错,因为大小写不匹配 -
函数名和关键字则不区分大小写:
echo "hello"; // 输出 "hello" ECHO "world"; // 也能输出 "world"
2.3 分号
每个 PHP 语句必须以分号 (;) 结束。如果没有分号,会导致解析错误。
echo "Hello, World!"; // 正确
echo "Hello, World!" // 错误,缺少分号
3. 变量
3.1 变量声明
PHP 变量不需要显式声明类型,使用 $ 符号加上变量名来声明和使用变量:
$name = "Alice";
$age = 25;
- PHP 是弱类型语言,变量类型由赋给它的值自动决定。
- 变量名必须以字母或下划线
_开头,后面可以跟字母、数字或下划线。
3.2 变量类型
PHP 支持多种变量类型:
-
字符串(String):
$str = "Hello"; -
整数(Integer):
$int = 123; -
浮点数(Float):
$float = 12.34; -
布尔值(Boolean):
$isTrue = true; -
数组(Array):
$arr = array("apple", "banana", "cherry"); -
对象(Object):
PHP 通过类(class)创建对象,详细内容后续介绍。 -
NULL 类型:
变量未定义或被赋值为NULL时,它就是NULL类型:$var = null;
4. 常量
常量的值一旦定义就不能改变,使用 define() 函数定义:
define("PI", 3.14159);
echo PI; // 输出 3.14159
- 常量名通常使用大写字母表示,定义后不需要
$符号引用。
5. 字符串操作
5.1 字符串拼接
PHP 中使用 . 运算符拼接字符串:
$greeting = "Hello, " . "World!";
echo $greeting; // 输出 "Hello, World!"
5.2 字符串插值
使用双引号定义的字符串支持变量插值:
$name = "Alice";
echo "Hello, $name"; // 输出 "Hello, Alice"
单引号字符串不支持变量插值,变量会按字面量输出:
echo 'Hello, $name'; // 输出 "Hello, $name"
6. 运算符
6.1 算术运算符
PHP 支持常见的算术运算符:
$a = 10;
$b = 3;echo $a + $b; // 加法,输出 13
echo $a - $b; // 减法,输出 7
echo $a * $b; // 乘法,输出 30
echo $a / $b; // 除法,输出 3.3333
echo $a % $b; // 取余数,输出 1
6.2 赋值运算符
常用赋值运算符:
$a = 5; // 基本赋值
$a += 10; // 相当于 $a = $a + 10,结果是 15
$a -= 2; // 相当于 $a = $a - 2,结果是 13
$a *= 3; // 相当于 $a = $a * 3,结果是 39
6.3 比较运算符
比较两个值的关系:
$a == $b; // 相等
$a === $b; // 全等(值和类型相同)
$a != $b; // 不等
$a > $b; // 大于
$a < $b; // 小于
6.4 逻辑运算符
用于布尔运算:
$and = true && false; // 逻辑与,结果为 false
$or = true || false; // 逻辑或,结果为 true
$not = !true; // 逻辑非,结果为 false
7. 条件语句
7.1 if-else 语句
PHP 支持标准的条件语句 if-else 语句:
$age = 18;if ($age >= 18) {echo "You are an adult.";
} else {echo "You are a minor.";
}
7.2 elseif
多条件分支使用 elseif:
$grade = 85;if ($grade >= 90) {echo "A";
} elseif ($grade >= 80) {echo "B";
} else {echo "C";
}
7.3 三元运算符
简洁的条件语句可以使用三元运算符:
$result = ($age >= 18) ? "Adult" : "Minor";
8. 循环结构
8.1 while 循环
while 循环会在条件为真时重复执行代码块:
$i = 1;while ($i <= 5) {echo $i; // 输出 1 到 5$i++;
}
8.2 for 循环
for 循环适用于已知循环次数的情况:
for ($i = 1; $i <= 5; $i++) {echo $i; // 输出 1 到 5
}
8.3 foreach 循环
foreach 用于遍历数组:
$arr = array("apple", "banana", "cherry");foreach ($arr as $fruit) {echo $fruit; // 输出 "apple", "banana", "cherry"
}
9. 函数
9.1 定义和调用函数
PHP 函数使用 function 关键字定义:
function greet($name) {return "Hello, $name!";
}echo greet("Alice"); // 输出 "Hello, Alice!"
9.2 默认参数
函数参数可以有默认值:
function greet($name = "Guest") {return "Hello, $name!";
}echo greet(); // 输出 "Hello, Guest!"
9.3 可变参数
PHP 函数可以通过 ... 来接收可变数量的参数:
function sum(...$numbers) {return array_sum($numbers);
}echo sum(1, 2, 3); // 输出 6
10. 数组
10.1 索引数组
PHP 的数组类似于其他语言的列表或数组:
$fruits = array("apple", "banana", "cherry");echo $fruits[0]; // 输出 "apple"
10.2 关联数组
关联数组使用键值对:
$ages = array("Alice" => 25, "Bob" => 30);echo $ages["Alice"]; // 输出 25
11. 面向对象编程 (OOP)
PHP 支持面向对象编程,以下是简单的类和对象的示例:
class Person {public $name;public function __construct($name) {$this->name = $name;}public function greet() {return "Hello, " . $this->name;}
}$person = new Person("Alice");
echo $person->greet(); // 输出 "Hello, Alice"
12. 表单处理
PHP 通常用于处理网页表单,数据通过 $_GET 或 $_POST 数组传递:
// 表单提交方式是 POST
$name = $_POST['name'];
echo "Hello, $name";
13. 会话管理
PHP 提供 session 机制用于在用户间传递数据:
session_start();
$_SESSION['username'] = "Alice";
这就是 PHP 的基础语法,涵盖了从变量、条件语句、循环、数组、函数到面向对象编程等基本内容。
结尾
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文


相关文章:
PHP基础语法讲解
大家好,我是程序员小羊! 前言: PHP(Hypertext Preprocessor)是一种常用于网页开发的服务器端脚本语言,易于学习并且与 HTML 紧密结合。以下是 PHP 的基础语法详细讲解。 1. PHP 基础结构 1.1 PHP 脚本结…...
【论文速看】DL最新进展20240923-长尾综述、人脸防伪、图像分割
目录 【长尾学习】【人脸防伪】【图像分割】 【长尾学习】 [2024综述] A Systematic Review on Long-Tailed Learning 论文链接:https://arxiv.org/pdf/2408.00483 长尾数据是一种特殊类型的多类不平衡数据,其中包含大量少数/尾部类别,这些类…...
device靶机详解
靶机下载地址 https://www.vulnhub.com/entry/unknowndevice64-1,293/ 靶机配置 主机发现 arp-scan -l 端口扫描 nmap -sV -A -T4 192.168.229.159 nmap -sS -Pn -A -p- -n 192.168.229.159 这段代码使用nmap工具对目标主机进行了端口扫描和服务探测。 -sS:使用…...
十四、SOA(在企业中的应用场景)
在企业中,**SOA(面向服务架构)**被广泛应用于多个场景,帮助企业提高灵活性、效率和业务响应能力。SOA通过分解企业系统中的功能模块,以服务的形式进行封装和集成,支持跨平台、跨系统的协同工作。以下是SOA在…...
单片机与PIC的区别:多方面对比
单片机与PIC的区别:多方面对比 在现代电子产品的设计中,单片机和PIC都是不可或缺的控制器。尽管它们在功能上有许多相似之处,但在设计、应用、优势和劣势等方面却有显著区别。今天,我们就来详细对比一下单片机和PIC。 1. 定义与…...
python新手的五个练习题
代码 # 1. 定义一个变量my_Number,将其设置为你的学号,然后输出到终端。 my_Number "20240001" # 假设你的学号是20240001 print("学号:", my_Number) # 2. 计算并输出到终端:两个数(例如3和5)的和、差、乘积和商。 num1 3 num2 5 print(&…...
Go语言并发编程之sync包详解
在当今多核时代,如何高效地利用并发是每个Go语言开发者都需要掌握的技能。Go语言为我们提供了丰富的并发编程工具,其中最基础也是最重要的就是sync包。本文将深入探讨sync包的各种并发原语,包括WaitGroup、Mutex、RWMutex、Cond、Once和Pool,并通过丰富的代码示例和详尽的解…...
函数题 6-10 阶乘计算升级版【PAT】
文章目录 题目函数接口定义裁判测试程序样例输入样例输出样例 题解解题思路完整代码AC代码 编程练习题目集目录 题目 要求实现一个打印非负整数阶乘的函数。 函数接口定义 void Print_Factorial ( const int N ); 其中N是用户传入的参数,其值不超过 1000 1000 10…...
java项目之基于springboot的医院资源管理系统源码
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的医院资源管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…...
Docker命令全解析:掌握容器化技术的基石
在容器化技术日益普及的今天,Docker作为其中的佼佼者,凭借其轻量级、可移植和易于管理的特性,赢得了广泛的关注和应用。而掌握Docker命令,则是深入理解和高效利用Docker的关键。本文将带您走进Docker命令的世界,从基础…...
2024.9.19
[ABC266F] Well-defined Path Queries on a Namori 题面翻译 题目描述 给定一张有 N N N 个点、 N N N 条边的简单连通无向图和 Q Q Q 次询问,对于每次询问,给定 x i , y i x_i,y_i xi,yi,表示两点的编号,请你回答第 x i …...
“跨链桥“的危害
跨链桥(Cross-Chain Bridges)是连接不同区块链网络的工具,允许用户在不同的区块链之间转移资产和数据。尽管跨链桥为区块链生态系统带来了许多便利,但它们也存在一些潜在的危害和风险。以下是一些主要的危害: 1. 安全…...
GO CronGin
文章目录 Robfig Cron介绍1. **安装 robfig/cron**2. **基本用法**示例:创建一个简单的定时任务3. **Cron 表达式**常用的 Cron 表达式示例:4. **添加和管理任务**5. **上下文支持**6. **使用场景**7. **高级用法**总结 Cron 在Gin中实践使用1. **安装 r…...
手机在网状态查询接口如何用C#进行调用?
一、什么是手机在网状态查询接口? 手机在网状态查询接口是利用实时数据来对手机号码在运营商网络中的状态进行查询的工具,包括正常使用状态、停机状态、不在网状态、预销户状态等。 二、手机在网状态查询适用哪些场景? 例如:商…...
Java面向对象特性与泛型:深入理解与应用
Java作为一种广泛使用的面向对象编程语言,提供了丰富的特性来支持面向对象编程(OOP)和泛型编程。本文将深入探讨Java的面向对象特性和泛型,以及它们在实际开发中的应用。 1. 面向对象特性 面向对象编程是一种编程范式࿰…...
Qwen2.5 本地部署的实战教程
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…...
Oracle数据库pl/sql显式抛出异常
在Oracle PL/SQL中,显式地抛出异常(Raising Exceptions Explicitly)是一种控制程序流程和处理错误的重要机制。当你希望在某些特定条件下中断程序的执行,并通知调用者发生了错误或异常情况时,可以使用这种机制。下面是…...
Undet for sketchup 2023.3注册机 支持草图大师sketchup2021-2022-2023
1.Undet for sketchup 2023.3支持草图大师sketchup2021-2022-2023。支持机载雷达扫描、车载扫描还是地面扫描,对AEC行业用户来说,真正需要的是如何将这些数据快速处理为三维模型,这样才能将这些信息延展到BIM领域发挥效用。因此面对这些海量的…...
Java详细学习路线:从入门到精通的全方位指南
Java作为一种广泛使用的编程语言,以其跨平台性、强大的库支持和广泛的应用领域(如Web开发、Android开发、大数据处理等)而著称。对于初学者来说,制定一个清晰、系统的学习路线至关重要。以下是一个从Java基础到高级应用的详细学习…...
Spark 性能优化高频面试题及答案
目录 高频面试题及答案1. 如何通过调整内存管理来优化 Spark 性能?2. 如何通过数据持久化优化性能?3. 如何通过减少数据倾斜(Data Skew)问题来优化性能?4. 如何通过优化 Shuffle 操作提升性能?5. 如何通过广…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
