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 的基础语法,涵盖了从变量、条件语句、循环、数组、函数到面向对象编程等基本内容。

结尾

今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148921.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

kubernetes网络(二)之bird实现节点间BGP互联的实验

摘要 上一篇文章中我们学习了calico的原理&#xff0c;kubernetes中的node节点&#xff0c;利用 calico 的 bird 程序相互学习路由&#xff0c;为了加深对 bird 程序的认识&#xff0c;本文我们将使用bird进行实验&#xff0c;实验中实现了BGP FULL MESH模式让宿主相互学习到对…

Python练习宝典:Day 3 - 选择题 - 字符串与正则表达式、基础练习补充

目录 一、基础练习补充二、字符串与正则表达式 一、基础练习补充 1.下列能返回变量s的数据类型的是: A.print(type(s)) B.print(s) C.print(int(s)) D.print(str(s))2.如果想要换行,可以使用: A.\ B.\n C.\t D.\f3.合法的标识符是: A.M-N B.and C.Dior_Ysl D.6_friends4.在…

记一次:基于wmi软件的rpm包和deb包相互转换【附rpm和deb包】

1 背景 项目需要修改容器的基础镜像&#xff0c;从之前的CentOS 8 修改成 Ubuntu&#xff0c;项目中需要wmi包&#xff08;一个windows系统上管理和查询系统各种信息的工具&#xff0c;windows上自带&#xff09; 之前是使用rpm包进行安装的&#xff0c;现在使用的是deb的包管…

JBoss EJBInvokerServlet CVE-2013-4810 反序列化漏洞

开启环境 访问http://172.16.1.183:8080/invoker/EJBInvokerServlet下载下来了说明漏洞存在 利用生成的.ser文件&#xff0c;通过POST 二进制数据上去&#xff0c;反向连接shell curl http://192.168.10.154:8080/invoker/EJBInvokerServlet --data-binary ReverseShellCommon…

数据结构(Day19)

一、学习内容 单链表 头删 int front_dele(Plink L) {if(LNULL||L->len0){printf("头删失败\n");return -1;}Plink Q L->next;//保留要删除的1号节点L->next L->next->next;L->len--;free(Q);//释放空间QNULL;return 0; }尾删 int rear_dele(Pli…

每日一练:二叉树的最大深度

104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09; 一、题目要求 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7…

框架漏洞(5-rce s2-057 CVE-2017-8046 CVE-2018-1273 Shiro-550)

5-rce 步骤一&#xff1a;环境部署 cd vulhub/thinkphp/5-rce docker-compose up -d 步骤二&#xff1a;输入系统命令: whoami /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami 步骤三&#xff1a;写…

常见的并发集合(java.util.concurrent)

1.CopyOnWriteArrayList 1.1 并发修改时保证线程安全: 通过ReentrantLock实现多个线程并发修改时的线程安全同步&#xff08;添加元素的同时&#xff0c;不允许删除&#xff09;添加新元素&#xff1a;list.add("")按照指定下标替换元素&#xff1a;list.set(index…

【Python调用ddddocr打包成exe文件指定模型库及注意事项】

ddddocr 打包成 exe 后一直存在各种各样的问题&#xff0c;例如&#xff1a; ddddocr\common.onnx failed. File doesn’t exist 查阅资料后&#xff0c;问题得到解决。但相关资料不多&#xff0c;且不够详细&#xff0c;特写下本文&#xff0c;以便于后来者解决问题。 希望本文…

java -----泛型

泛型的理解和好处 泛型是在JDK5之后引入的一个新特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。 泛型的格式为 <数据类型> import java.util.ArrayList;SuppressWarnings({"all"}) public class Generic02 {public static void…

【iOS】MVC架构模式

文章目录 前言MVC架构模式基本概念通信方式简单应用 总结 前言 “MVC”&#xff0c;即Model&#xff08;模型&#xff09;&#xff0c;View&#xff08;视图&#xff09;&#xff0c;Controller&#xff08;控制器&#xff09;,MVC模式是架构模式的一种。 关于“架构模式”&a…

【有奖问答 / B】

题目 DP代码 #include <bits/stdc.h> using namespace std; int f[35][100]; int sum; int main() {f[0][0] 1;for (int i 1; i < 30; i){for (int j 0; j < 90; j){f[i][0] f[i - 1][j];if (j 10 < 90)f[i][j 10] f[i - 1][j];}sum f[i][70];}cout &l…

动手学深度学习9.1. 门控循环单元(GRU)-笔记练习(PyTorch)

本节课程地址&#xff1a;门控循环单元&#xff08;GRU&#xff09;_哔哩哔哩_bilibili 本节教材地址&#xff1a;9.1. 门控循环单元&#xff08;GRU&#xff09; — 动手学深度学习 2.0.0 documentation (d2l.ai) 本节开源代码&#xff1a;...>d2l-zh>pytorch>chap…

信息学奥赛复赛复习01-CSP-J2019-01-字符、字符数组、字符串、string、字符串读取

PDF文档回复:20240923 1 2019 CSP-J 题目1 数字游戏 [题目描述] 小 K 同学向小 P 同学发送了一个长度为 8 的 01 字符串来玩数字游戏&#xff0c;小 P 同学想要知道字符串中究竟有多少个 1。 注意&#xff1a;01 字符串为每一个字符是 0 或者 1 的字符串&#xff0c;如 101 …

文心智能体搭建步骤

通过使用文心智能体平台来创建智能体的过程。这种方法可以让没有编程经验的人也能快速构建智能体&#xff0c;降低了技 术门槛。以下是一些建议和心得: 1.选择合适的平台:文心智能体平台是一个优秀的选择&#xff0c;它提供了零代码和低代码的开发环境&#xff0c;极大地降低了…

vue中高德地图使用 Marker 标点 - 标点数据快到 1000 时页面卡顿问题解决(已解决 - 多方面原因)+ 海量点功能实现解决

目录 1.业务需求2.最初实现及出现的问题3.解决 - 1000 个标点时页面就出现 卡顿 问题4.使用海量点、聚合标点后还有卡顿&#xff0c;排查其他原因5.最终解决5.1页面中list数据渲染问题解决5.2地图相关实例不要放在 vue 的可响应数据中 页面展示 1.业务需求 需要在 高德地图 中标…

【linux驱动】什么是驱动

内核简介 在谈驱动之前&#xff0c;我们需要先谈内核。 内核&#xff0c;是一个操作系统的核心。是基于硬件的第一层软件扩充&#xff0c;提供操作系统的最基本的功能&#xff0c;是操作系统工作的基础&#xff0c;决定着整个操作系统的性能和稳定性。 下面是微内核和宏内核…

oracle avg、count、max、min、sum、having、any、all、nvl的用法

组函数 having的使用 any的使用 all的使用 nvl 从执行结果来看&#xff0c;nvl(列名&#xff0c;默认值)&#xff0c;nvl的作用就是如果列名所在的这一行出现空则用默认值替换

Offer60:n个骰子的点数

题目&#xff1a;把n个骰子扔在地上&#xff0c;所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 分析:要解决这个问题&#xff0c;我们需要先统计出每个点数出现的次数&#xff0c;然后把每个点数出现的次数除以,就能求出每个点数出现的概率了。我们…