一起学习Web 后端——PHP(二):深入理解字符与函数的使用

一、前言

在上一讲中,我们主要讲PHP的相关知识。本节我们将继续深入,学习:

  • PHP 中各种语法字符符号的含义与用法;

  • PHP 中常用函数的种类、定义方式与实际应用。

这些知识是构建 Web 后端逻辑的基础,对于后期编写动态网站、处理表单、数据库操作都至关重要。


二、PHP 中字符与符号的含义与使用

1. PHP 标签

  • <?php ... ?>:标准标签,用于包裹 PHP 代码。

php

<?php

echo "Hello PHP";

?>

  • <?= ... ?>:短标签,等价于 <?php echo ... ?>,常用于模板输出。

php

<?= "Hello World";

?>

📌 默认情况下,短标签在某些服务器可能需开启 short_open_tag


2. 注释符号

  • 单行注释:

    • //

    • #(不常用)

  • 多行注释:

    php

    /*

    这是多行注释

    */


3.  常用运算符

运算符类型示例含义
赋值运算符=赋值
算术运算符+, -, *, /, %加减乘除求余
比较运算符==, ===, !=, <, >判断大小或相等
逻辑运算符&&, `
字符串连接符.将两个字符串拼接

例子:

php

<?php

$a = "Hello";

$b = "World";

echo $a . " " . $b;

// 输出 Hello World

?>

$name = "PHP";
echo "我爱" . $name; // 输出: 我爱PHP

4. 分号和花括号

  • 每个 PHP 语句必须以    ;     结尾

  • 代码块(如函数、条件、循环)使用 {} 包裹


5. 特殊字符与含义

字符含义
$用于定义变量(必须加)
\转义字符,例如 \n 表示换行,\" 表示双引号
=>数组键值对映射符
@错误抑制符(不推荐使用)
&引用传递
::类的作用域解析符
->对象成员访问符

例子:

php

<?php

$name = "PHP";

echo "Hello, \"$name\"\n";

// 输出 Hello, "PHP"

?>


三、PHP 中的函数详解

PHP 中函数是组织代码的基本单位。包括:

  • 系统内置函数

  • 用户自定义函数

  • 匿名函数 / 闭包函数


1. 函数的定义与调用

语法:

php

function 函数名($参数1, $参数2 = 默认值) {

// 函数体

return 返回值;

}

例子:

php

<?php

function greet($name = "Guest") {

 return "Hello, $name!";

}

echo greet("Tom");

// Hello, Tom! echo greet();

// Hello, Guest!

?>


2. 常用字符串处理函数

函数名用法示例说明
strlen($str)获取字符串长度
strpos($haystack, $needle)查找子串首次出现的位置
substr($str, $start, $length)提取子串
str_replace($search, $replace, $subject)字符串替换

例子:

php

<?php

$msg = "I love PHP";

echo strlen($msg);

// 输出 10 echo strpos($msg, "PHP");

// 输出 7 echo substr($msg, 2, 4);

?>


3. 数组相关函数

函数名功能
count($array)获取数组长度
array_push($arr, $val)向数组末尾添加元素
array_merge($a1, $a2)合并两个数组
in_array($val, $arr)判断值是否在数组中
array_keys($arr)获取所有键名

例子:

php

<?php

$colors = ["red", "green"];

array_push($colors, "blue");

print_r($colors);

// [red, green, blue]

?>


4. 数字与数学函数

函数示例说明
abs(-5)5绝对值
round(3.6)4四舍五入
rand(1, 10)随机整数
min(1, 2, 3)1最小值

5. 日期与时间函数

函数示例说明
date('Y-m-d')当前日期
time()时间戳
strtotime('next Monday')文本转时间戳

例子:

php

<?php

date_default_timezone_set('Asia/Shanghai');

echo date("Y-m-d H:i:s");

// 输出当前时间

?>


6. 文件操作函数(基础)

函数用法描述
fopen($file, $mode)打开文件
fread($handle, $length)读取内容
fwrite($handle, $content)写入内容
fclose($handle)关闭文件
file_get_contents()快速读取文件
file_put_contents()快速写入文件

例子:

php

<?php

file_put_contents("test.txt", "Hello File!");

echo file_get_contents("test.txt");

?>


四、函数进阶:匿名函数与回调

PHP 支持使用匿名函数作为变量或参数(类似 JS)。

php

<?php

$sum = function($a, $b) {

return $a + $b;

};

echo $sum(3, 5);

// 8

?>


使用回调函数示例

php

<?php

function handle($callback) {

echo $callback("Web", "PHP");

}

handle(function($a, $b) {

return "$a + $b is great!";

});

?>


五、自定义常用实用函数举例

1.获取客户端 IP

php

<?php

function getClientIP() {

// 检查 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR

if (isset($_SERVER['HTTP_CLIENT_IP'])) {

$ip = $_SERVER['HTTP_CLIENT_IP'];

} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

// HTTP_X_FORWARDED_FOR 可能包含多个 IP 地址,取第一个

$ip = explode(',', $ip); $ip = trim($ip[0]);

// 去掉可能的空格

} else {

$ip = $_SERVER['REMOTE_ADDR'];

}

return $ip;

}

echo getClientIP();

?>

2.安全输出(防 XSS)

php

function safe_output($str) {

return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');

}


六、总结

分类内容
符号类$, =>, ;, {} 等,用于结构表达
运算类+, ==, &&, . 等,表达逻辑
函数类strlen, array_merge, date, file_get_contents 等,功能丰富
编程模式自定义函数、匿名函数、回调函数

七、下一步建议

  • 练习编写多个函数,尝试封装逻辑;

  • 理解全局变量、函数作用域;

  • 学习表单处理与数据库函数(如 mysqli_*, PDO);

  • 学习使用 Composer 和第三方函数库。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Bluedroid】蓝牙启动之 GAP_Init 流程源码解析

蓝牙 GAP(通用访问配置文件)模块是蓝牙协议栈的核心组件,负责设备发现、连接管理及基础属性暴露等关键功能。本文围绕 Android蓝牙协议栈 GAP 模块的初始化流程与连接管理实现展开,结合代码解析其核心函数(GAP_Init、gap_conn_init、gap_attr_db_init)的功能逻辑,以及关…

最新四六级写作好词好句锦囊(持续更新中)

完整版四六级备考攻略可见另一篇博客~~&#xff08;喜欢的留个点赞收藏再走呗~~&#xff09; ​​​​​​四六级备考攻略-CSDN博客 一、通用 1、词组 2、单词 3、句型 二、老龄化、老年人 三、学习、社交、社会实践 四、文化、习俗 五、数字素养、数字技能 六、资…

Java 通用实体验证框架:从业务需求到工程化实践【生产级 - 适用于订单合并前置校验】

Java 通用实体验证框架&#xff1a;从业务需求到工程化实践【适用于订单合并前置校验】 一、业务验证痛点与需求背景 1. 传统验证方式的困境 传统验证方式存在代码冗余、维护成本高和扩展性差等问题。相同的验证逻辑在不同模块重复编写&#xff0c;修改验证规则时需要同步修…

PyArk飘云阁出品的ARK工具

PyArk是由飘云阁&#xff08;PiaoYunGe&#xff09;开发的一款功能强大的系统安全分析工具&#xff0c;主要用于Windows环境下的内核级检测与分析。该工具集成了进程管理、驱动模块扫描、内核及应用层钩子检测、进程注入等核心功能&#xff0c;旨在帮助安全研究人员深入识别潜在…

【高中数学之复数】已知复数z的幅角为60°,且|z-1|是|z|和|z-2|的等比中项,求|z|?(2003高考数学全国卷,解答题首题,总第17题)

【问题】 已知复数z的幅角为60&#xff0c;且|z-1|是|z|和|z-2|的等比中项&#xff0c;求|z|? 【来源】 2003高考数学全国卷&#xff0c;解答题首题&#xff0c;总第17题。 【解答】 解&#xff1a; 由复数辐长辐角定义有 zr*(Cos60iSin60) 据等比中项定义有&#xff1…

观点 | 科技企业到了品牌建设的历史性窗口期

随着全球科技产业的飞速发展&#xff0c;科技型企业作为推动技术创新和经济发展的重要力量&#xff0c;正面临着前所未有的机遇与挑战。近年来&#xff0c;中国科技行业保持了快速增长的态势。根据国家统计局的数据&#xff0c;2023年全国研究与试验发展&#xff08;R&D&am…

影像组学5:Radiomics Score的计算

Rad-score&#xff08;全称 Radiomics score&#xff0c;影像组学评分&#xff09;是通过数学模型将影像组学提取的多个特征整合为一个综合性指标&#xff0c;从而简化临床分析与决策。 前文已介绍影像组学的病灶分割、特征提取及筛选流程&#xff0c;本节将重点阐述 Rad-scor…

使用Appium在iOS上实现自动化

安装 Appium npm install -g appium检测 Appium 是否安装成功 appium --version安装 Appium Doctor npm install appium-doctor -g安装 ios 测试驱动 appium driver install xcuitest检测 iOS 环境是否正常 appium-doctor --ios安装 ideviceinstaller brew install idevi…

JPA全面指南:使用步骤、语法详解与实战案例

一、JPA概述与核心概念 1.1 什么是JPA&#xff1f; Java Persistence API&#xff08;JPA&#xff09;是Java EE和Java SE平台上的ORM&#xff08;对象关系映射&#xff09;标准规范&#xff0c;它简化了Java应用程序与数据库的交互过程。JPA不是具体的实现&#xff0c;而是一…

Django框架认证系统默认在登录成功后尝试重定向到/accounts/profile/

这个404错误是因为Django的认证系统默认在登录成功后尝试重定向到/accounts/profile/,但你的项目中没有配置这个URL。以下是完整解决方案: 方法一:设置登录重定向路径(推荐) 在settings.py中添加以下配置: # settings.py LOGIN_REDIRECT_URL = /dashboard/ # 替换为你…

QT实现右键菜单栏

1.所需头文件 #include <QPoint> // QPoint 类型 #include <QWidget> // mapFromGlobal() 的父类 #include <QEvent> // event->globalPos() 的来源&#xff08;如 QMouseEvent&#xff09; #include <QContextMenuEvent> // 用于 QContex…

华为云Flexus+DeepSeek征文|华为云CCE容器高可用部署Dify LLM应用后的资源释放指南

目录 前言 1 高可用部署带来的资源特性 1.1 涉及的核心资源组件 1.2 高可用部署的代价 2 正确释放资源的重要性 3 使用资源编排释放资源 3.1 进入资源编排页面 3.2 两种删除方式解析 3.3 推荐操作流程 4 手动删除各类云资源 4.1 使用资源页面集中管理 4.2 分服务删…

yum查看历史操作

在 Red Hat/CentOS 系统中&#xff0c;可以使用 yum history 命令查看和管理 YUM/DNF 的历史操作记录。以下是详细使用方法&#xff1a; 1. 查看完整历史记录 sudo yum history list # 或简写 sudo yum history输出示例&#xff1a; ID | 命令行 | 日期与时间…

Python-Flask实现登录

Python-Flask实现登录 Python-Flask实现登录项目结构Flask蓝图路由项目代码 Python-Flask实现登录 项目结构 Flask蓝图路由 from flask import Blueprint, render_template, request, sessionac Blueprint(account, __name__)ac.route(/login, methods[GET, POST]) def logi…

libcuckoo 介绍和使用指南

文章目录 libcuckoo 介绍和使用指南什么是 libcuckoo&#xff1f;主要特点安装方法从源码安装 基本使用方法创建哈希表并发操作示例 高级功能自定义哈希函数和比较函数更新操作大小和统计信息 性能考虑适用场景注意事项 libcuckoo 介绍和使用指南 libcuckoo 是一个高性能、并发…

TIA Portal V20HMI仿真时数值无法写入虚拟plc解决教程

在博图 V20 中使用 S7-PLCSIM Advanced 仿真 S7-1500 Advanced V5.0 PLC&#xff0c;同时使用 WinCC Runtime Advanced 仿真 HMI 时出现“连接中断”且无法写入数值&#xff0c;而单独使用 S7-PLCSIM (Classic) 仿真 PLC 正常&#xff0c;这是一个非常典型且令人困扰的问题。问…

微型导轨在实验室场景中的多元应用

在实验室环境中&#xff0c;精密仪器与设备的性能往往取决于微米甚至纳米级的运动控制能力。微型导轨以其紧凑结构、低摩擦特性及高定位精度&#xff0c;成为光学实验台、显微操作平台、半导体检测设备等核心装置的“隐形支撑者”。 自动化分析仪&#xff1a;微型导轨用于控制样…

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…

Neo4j批量数据导入完全指南:高效处理大规模数据

Neo4j批量数据导入完全指南&#xff1a;高效处理大规模数据 Neo4j作为领先的图数据库&#xff0c;在处理大规模数据导入时需要特别的技术和方法。本文将全面介绍Neo4j批量导入数据的各种技术方案&#xff0c;帮助您选择最适合业务场景的导入方式。 一、Neo4j批量导入的应用场…

Acrobat 首选项配置:从注册表到锁定机制

管理员通常通过首选项和属性在部署前配置安装程序&#xff0c;使受控机器共享必要设置。Acrobat和Reader共享通用首选项集且配置方式相似。由于每台机器的用户界面配置不可扩展&#xff0c;Adobe提供两大配置资源&#xff1a; 需知事项&#xff1a; 文档示例多使用Windows注册…